diff -Nru thermald-1.9.1/debian/changelog thermald-1.9.1/debian/changelog --- thermald-1.9.1/debian/changelog 2021-01-12 14:41:57.000000000 +0000 +++ thermald-1.9.1/debian/changelog 2021-06-28 14:22:24.000000000 +0000 @@ -1,3 +1,47 @@ +thermald (1.9.1-1ubuntu0.5) focal; urgency=medium + + * Pull in bug fixes between 2.4.3 and 2.4.6 (LP: #1931565) + [Colin Ian King] + - Fix spelling mistakes found using codespell + [Srinivas Pandruvada] + - Disable legacy rapl cdev when rapl-mmio is in use + This will prevent PL1/PL2 power limit from MSR based rapl, which + may not be the correct one. + - Delete all trips from zones before psvt install + Initially zones has all the trips from sysfs, which may have wrong + settings. Instead of deleting only for matched psvt zones, delete + or all zones. In this way only zones which are in PSVT will be + present. + - Check for alternate names for B0D4 device + B0D4 can be named as TCPU or B0D4. So search for both names + if failed to find one. + - Fix error for condition names + The current code caps the max name as the last condition name, + which is "Power_Slider". So any condition more than 56 will be + printing error, with "Power_Slider" as condition name. For example + for condition = 57: Unsupported condition 57 (Power_slider) + - Set a very high RAPL MSR PL1 with --adaptive + After upgrading Dell Latitude 5420, again noticed performance + degradation. + The PPCC power limit for MSR RAPL PL1 is reduced to 15W. Even though + we disable MSR RAPL with --adaptive option, it is not getting + disabled. So MSR RAPL limits still playing role. + To fix that set a very high MSR RAPL PL1 limit so that it never + causes throttling. All throttling with --adaptive option is done + using RAPL-MMIO. + - Special case for default PSVT + When there are no adaptive tables and only one default PSVT table + is present with just one entry with MAX type. Add one additional + entry as done for non default case. + - Increase power limit for disabled RAPL-MMIO + Increase 100W to 200W as some desktop platform already have limit + more than 100W. + - Use Adaptive PPCC limits for RAPL MMIO + Set the correct device name as RAPL-MSR so that RAPL-MMIO can + also set the correct default power limits. + + -- Colin King Mon, 28 Jun 2021 15:22:24 +0100 + thermald (1.9.1-1ubuntu0.4) focal; urgency=medium * Backport the adaptive engine (and all the required dependencies) diff -Nru thermald-1.9.1/debian/patches/0135-Fix-spelling-mistakes-found-using-codespell.patch thermald-1.9.1/debian/patches/0135-Fix-spelling-mistakes-found-using-codespell.patch --- thermald-1.9.1/debian/patches/0135-Fix-spelling-mistakes-found-using-codespell.patch 1970-01-01 00:00:00.000000000 +0000 +++ thermald-1.9.1/debian/patches/0135-Fix-spelling-mistakes-found-using-codespell.patch 2021-06-28 14:22:24.000000000 +0000 @@ -0,0 +1,425 @@ +Index: thermald-1.9.1/README.txt +=================================================================== +--- thermald-1.9.1.orig/README.txt ++++ thermald-1.9.1/README.txt +@@ -253,7 +253,7 @@ Release 1.03 + - Added P state turbo on/off + + Release 1.02 +-- Allow user to change the max temperarure via dbus message ++- Allow user to change the max temperature via dbus message + - Allow user to change the cooling method order via an XML configuration + - Upstart fixes + - Valgrind and zero warnings on build +@@ -317,7 +317,7 @@ on slope and angular increments to dynam + + + Version 0.2 +-- Define XML interface to set configuration data. Refere to thermal-conf.xml. This allows to override buggy Bios thermal comfiguration and also allows to extend the capability. ++- Define XML interface to set configuration data. Refer to thermal-conf.xml. This allows to override buggy Bios thermal comfiguration and also allows to extend the capability. + - Use platform DMI UUID to index into configuration data. If there is no UUID match, falls back to thermal sysfs + - Terminate interface + - Takes over control from kernel thermal processing +@@ -329,7 +329,7 @@ Version 0.1 + - Defines a C++ classes for zones, cooling devices, trip points, thermal engine + - Methods can be overridden in a custom class to modify default behaviour + - Read thermal zone and cooling devices, trip points etc, +-- Read temprature via netlink notification or via polling configurable via command line ++- Read temperature via netlink notification or via polling configurable via command line + - Once a trip point is crossed, activate the associate cooling devices. Start with min tstate to max tstate for each cooling device. + - Based on active or passive settings it decides the cooling devices + +Index: thermald-1.9.1/data/thermal-conf.xml +=================================================================== +--- thermald-1.9.1.orig/data/thermal-conf.xml ++++ thermald-1.9.1/data/thermal-conf.xml +@@ -98,7 +98,7 @@ use "man thermal-conf.xml" for details + + max +Index: thermald-1.9.1/man/thermald.8 +=================================================================== +--- thermald-1.9.1.orig/man/thermald.8 ++++ thermald-1.9.1/man/thermald.8 +@@ -51,7 +51,7 @@ For manual configuration refer to the ma + In some newer platforms the auto creation of the config file is done by a companion tool "dptfxtract". This tool can be downloaded from + "https://github.com/intel/dptfxtract". It is suggested as parts of the install process, run dptfxtract. + +-There can be multiple configuration files. User can select a configuration file via -config-file option to overide the default selection. The default selection picks one of the file in the following order: ++There can be multiple configuration files. User can select a configuration file via -config-file option to override the default selection. The default selection picks one of the file in the following order: + + - /etc/thermald/thermal-conf.xml.auto + +Index: thermald-1.9.1/src/android_main.cpp +=================================================================== +--- thermald-1.9.1.orig/src/android_main.cpp ++++ thermald-1.9.1/src/android_main.cpp +@@ -231,7 +231,7 @@ int main(int argc, char *argv[]) { + + is_privileged_user = (getuid() == 0) || (getuid() == AID_SYSTEM); + if (!is_privileged_user && !test_mode) { +- thd_log_error("You do not have correct permissions to run thermal dameon!\n"); ++ thd_log_error("You do not have correct permissions to run thermal daemon!\n"); + exit(1); + } + +Index: thermald-1.9.1/src/thd_cdev_modem.cpp +=================================================================== +--- thermald-1.9.1.orig/src/thd_cdev_modem.cpp ++++ thermald-1.9.1/src/thd_cdev_modem.cpp +@@ -340,7 +340,7 @@ void cthd_cdev_modem::update_throttling_ + conn = dbus_bus_get(DBUS_BUS_SYSTEM, &error); + + if (dbus_error_is_set(&error)) { +- thd_log_error("Error :%s", error.message); ++ thd_log_error("Error: %s", error.message); + dbus_error_free(&error); + return; + } +@@ -398,7 +398,7 @@ void cthd_cdev_modem::set_curr_state(int + conn = dbus_bus_get(DBUS_BUS_SYSTEM, &error); + + if (dbus_error_is_set(&error)) { +- thd_log_error("Erro : %s", error.message); ++ thd_log_error("Error: %s", error.message); + dbus_error_free(&error); + return; + } +Index: thermald-1.9.1/src/thd_zone.cpp +=================================================================== +--- thermald-1.9.1.orig/src/thd_zone.cpp ++++ thermald-1.9.1/src/thd_zone.cpp +@@ -1,5 +1,5 @@ + /* +- * thd_zone.cpp: thermal zone class implentation ++ * thd_zone.cpp: thermal zone class implementation + * + * Copyright (C) 2012 Intel Corporation. All rights reserved. + * +Index: thermald-1.9.1/test/test6.xml +=================================================================== +--- thermald-1.9.1.orig/test/test6.xml ++++ thermald-1.9.1/test/test6.xml +@@ -4,7 +4,7 @@ This test configuration tests how target + test if multiple target state for multiple trips to the same cooling + device. Here two trips have target state the last trip doesn't have + any target state and will go up to max. Make sure that system behaves +-any temperature chage" ++any temperature change" + - 40 to 50 to 60 + - Directly to 60 + - Wild wings between 10 to 60C +Index: thermald-1.9.1/tools/thermal_monitor/qcustomplot/changelog.txt +=================================================================== +--- thermald-1.9.1.orig/tools/thermal_monitor/qcustomplot/changelog.txt ++++ thermald-1.9.1/tools/thermal_monitor/qcustomplot/changelog.txt +@@ -125,7 +125,7 @@ Other: + - Fixed bug that allowed scatter-only graphs to be selected by clicking the non-existent line between scatters + - Fixed crash when trying to select a scatter-only QCPGraph whose only points in the visible key range are at identical key coordinates and vertically off-screen, with adaptive sampling enabled + - Fixed pdf export of QCPColorMap with enabled interpolation (didn't appear interpolated in pdf) +- - Reduced QCPColorMap jitter of internal cell boundaries for small sized maps when viewed with high zoom, by applying oversampling factors dependant on map size ++ - Reduced QCPColorMap jitter of internal cell boundaries for small sized maps when viewed with high zoom, by applying oversampling factors dependent on map size + - Fixed bug of QCPColorMap::fill() not causing the buffered internal image map to be updated, and thus the change didn't become visible immediately + - Axis labels with size set in pixels (setPixelSize) instead of points now correctly calculate the exponent's font size if beautifully typeset powers are enabled + - Fixed QCPColorMap appearing at the wrong position for logarithmic axes and color map spanning larger ranges +@@ -435,7 +435,7 @@ Other: + - QCPAxis::setLabelColor and setTickLabelColor + - QCustomPlot::setTitleColor + - QCustomPlot now emits beforeReplot and afterReplot signals. Note that it is safe to make two customPlots mutually call eachothers replot functions +- in one of these slots, it will not cause an infinite loop. (usefull for synchronizing axes ranges between two customPlots, because setRange alone doesn't replot) ++ in one of these slots, it will not cause an infinite loop. (useful for synchronizing axes ranges between two customPlots, because setRange alone doesn't replot) + - If the Qt version is 4.7 or greater, the tick label strings in date-time-mode now support sub-second accuracy (e.g. with format like "hh:mm:ss.zzz"). + + Bugfixes: +Index: thermald-1.9.1/tools/thermal_monitor/thermaldinterface.cpp +=================================================================== +--- thermald-1.9.1.orig/tools/thermal_monitor/thermaldinterface.cpp ++++ thermald-1.9.1/tools/thermal_monitor/thermaldinterface.cpp +@@ -141,7 +141,7 @@ bool ThermaldInterface::initialize() + } + } + } +- // Store the actual number of trips, as opposed to the theoritical maximum ++ // Store the actual number of trips, as opposed to the theoretical maximum + zones[i].trip_count = zones[i].trips.count(); + + // Store the first valid trip temp for the zone +Index: thermald-1.9.1/tools/thermal_monitor/qcustomplot/qcustomplot.cpp +=================================================================== +--- thermald-1.9.1.orig/tools/thermal_monitor/qcustomplot/qcustomplot.cpp ++++ thermald-1.9.1/tools/thermal_monitor/qcustomplot/qcustomplot.cpp +@@ -1717,7 +1717,7 @@ void QCPLayerable::mousePressEvent(QMous + + The current pixel position of the cursor on the QCustomPlot widget is accessible via \c + event->pos(). The parameter \a startPos indicates the position where the initial \ref +- mousePressEvent occured, that started the mouse interaction. ++ mousePressEvent occurred, that started the mouse interaction. + + The default implementation does nothing. + +@@ -1735,7 +1735,7 @@ void QCPLayerable::mouseMoveEvent(QMouse + + The current pixel position of the cursor on the QCustomPlot widget is accessible via \c + event->pos(). The parameter \a startPos indicates the position where the initial \ref +- mousePressEvent occured, that started the mouse interaction. ++ mousePressEvent occurred, that started the mouse interaction. + + The default implementation does nothing. + +@@ -3146,7 +3146,7 @@ void QCPMarginGroup::removeChild(QCP::Ma + /*! \fn QRect QCPLayoutElement::rect() const + + Returns the inner rect of this layout element. The inner rect is the outer rect (\ref +- setOuterRect) shrinked by the margins (\ref setMargins, \ref setAutoMargins). ++ setOuterRect) shrunk by the margins (\ref setMargins, \ref setAutoMargins). + + In some cases, the area between outer and inner rect is left blank. In other cases the margin + area is used to display peripheral graphics while the main content is in the inner rect. This is +@@ -3732,7 +3732,7 @@ void QCPLayout::updateLayout() + \ref QCPLayerable::parentLayerable and the QObject parent to this layout. + + Further, if \a el didn't previously have a parent plot, calls \ref +- QCPLayerable::initializeParentPlot on \a el to set the paret plot. ++ QCPLayerable::initializeParentPlot on \a el to set the parent plot. + + This method is used by subclass specific methods that add elements to the layout. Note that this + method only changes properties in \a el. The removal from the old layout and the insertion into +@@ -3835,11 +3835,11 @@ QVector QCPLayout::getSectionSizes( + double freeSize = totalSize; + + int outerIterations = 0; +- while (!unfinishedSections.isEmpty() && outerIterations < sectionCount*2) // the iteration check ist just a failsafe in case something really strange happens ++ while (!unfinishedSections.isEmpty() && outerIterations < sectionCount*2) // the iteration check is just a failsafe in case something really strange happens + { + ++outerIterations; + int innerIterations = 0; +- while (!unfinishedSections.isEmpty() && innerIterations < sectionCount*2) // the iteration check ist just a failsafe in case something really strange happens ++ while (!unfinishedSections.isEmpty() && innerIterations < sectionCount*2) // the iteration check is just a failsafe in case something really strange happens + { + ++innerIterations; + // find section that hits its maximum next: +@@ -4242,7 +4242,7 @@ void QCPLayoutGrid::setWrap(int count) + + If you want to have all current elements arranged in the new order, set \a rearrange to true. The + elements will be rearranged in a way that tries to preserve their linear index. However, empty +- cells are skipped during build-up of the new cell order, which shifts the succeding element's ++ cells are skipped during build-up of the new cell order, which shifts the succeeding element's + index. The rearranging is performed even if the specified \a order is already the current fill + order. Thus this method can be used to re-wrap the current elements. + +@@ -5437,7 +5437,7 @@ void QCPAxisTicker::generate(const QCPRa + // generate (major) ticks: + double tickStep = getTickStep(range); + ticks = createTickVector(tickStep, range); +- trimTicks(range, ticks, true); // trim ticks to visible range plus one outer tick on each side (incase a subclass createTickVector creates more) ++ trimTicks(range, ticks, true); // trim ticks to visible range plus one outer tick on each side (in case a subclass createTickVector creates more) + + // generate sub ticks between major ticks: + if (subTicks) +@@ -6392,7 +6392,7 @@ double QCPAxisTickerFixed::getTickStep(c + + This is useful for cases where the axis represents categories rather than numerical values. + +- If you are updating the ticks of this ticker regularly and in a dynamic fasion (e.g. dependent on ++ If you are updating the ticks of this ticker regularly and in a dynamic fashion (e.g. dependent on + the axis range), it is a sign that you should probably create an own ticker by subclassing + QCPAxisTicker, instead of using this one. + +@@ -8417,7 +8417,7 @@ void QCPAxis::rescale(bool onlyVisiblePl + { + if (!QCPRange::validRange(newRange)) // likely due to range being zero (plottable has only constant data in this axis dimension), shift current range to at least center the plottable + { +- double center = (newRange.lower+newRange.upper)*0.5; // upper and lower should be equal anyway, but just to make sure, incase validRange returned false for other reason ++ double center = (newRange.lower+newRange.upper)*0.5; // upper and lower should be equal anyway, but just to make sure, in case validRange returned false for other reason + if (mScaleType == stLinear) + { + newRange.lower = center-mRange.size()/2.0; +@@ -10639,7 +10639,7 @@ void QCPAbstractPlottable::setSelectable + taking the orientations of the axes associated with this plottable into account (e.g. whether key + represents x or y). + +- \a key and \a value are transformed to the coodinates in pixels and are written to \a x and \a y. ++ \a key and \a value are transformed to the coordinates in pixels and are written to \a x and \a y. + + \see pixelsToCoords, QCPAxis::coordToPixel + */ +@@ -10681,7 +10681,7 @@ const QPointF QCPAbstractPlottable::coor + taking the orientations of the axes associated with this plottable into account (e.g. whether key + represents x or y). + +- \a x and \a y are transformed to the plot coodinates and are written to \a key and \a value. ++ \a x and \a y are transformed to the plot coordinates and are written to \a key and \a value. + + \see coordsToPixels, QCPAxis::coordToPixel + */ +@@ -10752,7 +10752,7 @@ void QCPAbstractPlottable::rescaleKeyAxi + newRange.expand(keyAxis->range()); + if (!QCPRange::validRange(newRange)) // likely due to range being zero (plottable has only constant data in this axis dimension), shift current range to at least center the plottable + { +- double center = (newRange.lower+newRange.upper)*0.5; // upper and lower should be equal anyway, but just to make sure, incase validRange returned false for other reason ++ double center = (newRange.lower+newRange.upper)*0.5; // upper and lower should be equal anyway, but just to make sure, in case validRange returned false for other reason + if (keyAxis->scaleType() == QCPAxis::stLinear) + { + newRange.lower = center-keyAxis->range().size()/2.0; +@@ -10795,7 +10795,7 @@ void QCPAbstractPlottable::rescaleValueA + newRange.expand(valueAxis->range()); + if (!QCPRange::validRange(newRange)) // likely due to range being zero (plottable has only constant data in this axis dimension), shift current range to at least center the plottable + { +- double center = (newRange.lower+newRange.upper)*0.5; // upper and lower should be equal anyway, but just to make sure, incase validRange returned false for other reason ++ double center = (newRange.lower+newRange.upper)*0.5; // upper and lower should be equal anyway, but just to make sure, in case validRange returned false for other reason + if (valueAxis->scaleType() == QCPAxis::stLinear) + { + newRange.lower = center-valueAxis->range().size()/2.0; +@@ -10861,7 +10861,7 @@ bool QCPAbstractPlottable::addToLegend() + + /*! \overload + +- Removes the plottable from the specifed \a legend. This means the \ref QCPPlottableLegendItem ++ Removes the plottable from the specified \a legend. This means the \ref QCPPlottableLegendItem + that is associated with this plottable is removed. + + Returns true on success, i.e. if the legend exists and a legend item associated with this +@@ -12044,7 +12044,7 @@ void QCPAbstractItem::setSelected(bool s + that name, returns 0. + + This function provides an alternative way to access item positions. Normally, you access +- positions direcly by their member pointers (which typically have the same variable name as \a ++ positions directly by their member pointers (which typically have the same variable name as \a + name). + + \see positions, anchor +@@ -12065,7 +12065,7 @@ QCPItemPosition *QCPAbstractItem::positi + that name, returns 0. + + This function provides an alternative way to access item anchors. Normally, you access +- anchors direcly by their member pointers (which typically have the same variable name as \a ++ anchors directly by their member pointers (which typically have the same variable name as \a + name). + + \see anchors, position +@@ -14140,7 +14140,7 @@ void QCustomPlot::replot(QCustomPlot::Re + return; + } + +- if (mReplotting) // incase signals loop back to replot slot ++ if (mReplotting) // in case signals loop back to replot slot + return; + mReplotting = true; + mReplotQueued = false; +@@ -14482,7 +14482,7 @@ void QCustomPlot::resizeEvent(QResizeEve + + Event handler for when a double click occurs. Emits the \ref mouseDoubleClick signal, then + determines the layerable under the cursor and forwards the event to it. Finally, emits the +- specialized signals when certain objecs are clicked (e.g. \ref plottableDoubleClick, \ref ++ specialized signals when certain objects are clicked (e.g. \ref plottableDoubleClick, \ref + axisDoubleClick, etc.). + + \see mousePressEvent, mouseReleaseEvent +@@ -14738,7 +14738,7 @@ void QCustomPlot::updateLayout() + the viewport with the provided \a painter. The scaled version is buffered in + mScaledBackgroundPixmap to prevent expensive rescaling at every redraw. It is only updated, when + the axis rect has changed in a way that requires a rescale of the background pixmap (this is +- dependent on the \ref setBackgroundScaledMode), or when a differend axis background pixmap was ++ dependent on the \ref setBackgroundScaledMode), or when a different axis background pixmap was + set. + + Note that this function does not draw a fill with the background brush +@@ -16253,7 +16253,7 @@ void QCPSelectionDecoratorBracket::drawB + + /*! + Draws the bracket decoration on the data points at the begin and end of each selected data +- segment given in \a seletion. ++ segment given in \a selection. + + It uses the method \ref drawBracket to actually draw the shapes. + +@@ -16630,7 +16630,7 @@ QList QCPAxisRect::axes() cons + new QCPAxis instance is created internally. QCustomPlot owns the returned axis, so if you want to + remove an axis, use \ref removeAxis instead of deleting it manually. + +- You may inject QCPAxis instances (or sublasses of QCPAxis) by setting \a axis to an axis that was ++ You may inject QCPAxis instances (or subclasses of QCPAxis) by setting \a axis to an axis that was + previously created outside QCustomPlot. It is important to note that QCustomPlot takes ownership + of the axis, so you may not delete it afterwards. Further, the \a axis must have been created + with this axis rect as parent and with the same axis type as specified in \a type. If this is not +@@ -17382,7 +17382,7 @@ void QCPAxisRect::setRangeZoomFactor(dou + the axis rect with the provided \a painter. The scaled version is buffered in + mScaledBackgroundPixmap to prevent expensive rescaling at every redraw. It is only updated, when + the axis rect has changed in a way that requires a rescale of the background pixmap (this is +- dependent on the \ref setBackgroundScaledMode), or when a differend axis background pixmap was ++ dependent on the \ref setBackgroundScaledMode), or when a different axis background pixmap was + set. + + \see setBackground, setBackgroundScaled, setBackgroundScaledMode +@@ -18357,7 +18357,7 @@ bool QCPLegend::hasItemWithPlottable(con + Adds \a item to the legend, if it's not present already. The element is arranged according to the + current fill order (\ref setFillOrder) and wrapping (\ref setWrap). + +- Returns true on sucess, i.e. if the item wasn't in the list already and has been successfuly added. ++ Returns true on success, i.e. if the item wasn't in the list already and has been successfuly added. + + The legend takes ownership of the item. + +@@ -19351,7 +19351,7 @@ void QCPColorScale::rescaleDataRange(boo + { + if (!QCPRange::validRange(newRange)) // likely due to range being zero (plottable has only constant data in this dimension), shift current range to at least center the data + { +- double center = (newRange.lower+newRange.upper)*0.5; // upper and lower should be equal anyway, but just to make sure, incase validRange returned false for other reason ++ double center = (newRange.lower+newRange.upper)*0.5; // upper and lower should be equal anyway, but just to make sure, in case validRange returned false for other reason + if (mDataScaleType == QCPAxis::stLinear) + { + newRange.lower = center-mDataRange.size()/2.0; +@@ -25323,7 +25323,7 @@ void QCPColorMap::setGradient(const QCPC + + /*! + Sets whether the color map image shall use bicubic interpolation when displaying the color map +- shrinked or expanded, and not at a 1:1 pixel-to-data scale. ++ shrunk or expanded, and not at a 1:1 pixel-to-data scale. + + \image html QCPColorMap-interpolate.png "A 10*10 color map, with interpolation and without interpolation enabled" + */ +@@ -29160,7 +29160,7 @@ QPen QCPItemPixmap::mainPen() const + the coordinate axes of the graph and update its \a position to be on the graph's data. This means + the key stays controllable via \ref setGraphKey, but the value will follow the graph data. If a + QCPGraph is connected, note that setting the coordinates of the tracer item directly via \a +- position will have no effect because they will be overriden in the next redraw (this is when the ++ position will have no effect because they will be overridden in the next redraw (this is when the + coordinate update happens). + + If the specified key in \ref setGraphKey is outside the key bounds of the graph, the tracer will +Index: thermald-1.9.1/tools/thermal_monitor/qcustomplot/qcustomplot.h +=================================================================== +--- thermald-1.9.1.orig/tools/thermal_monitor/qcustomplot/qcustomplot.h ++++ thermald-1.9.1/tools/thermal_monitor/qcustomplot/qcustomplot.h +@@ -2417,7 +2417,7 @@ protected: + // property members: + bool mAutoSqueeze; + +- // non-property memebers: ++ // non-property members: + QVector mData; + int mPreallocSize; + int mPreallocIteration; +@@ -2772,7 +2772,7 @@ void QCPDataContainer::remove( + + Removes a single data point at \a sortKey. If the position is not known with absolute (binary) + precision, consider using \ref remove(double sortKeyFrom, double sortKeyTo) with a small +- fuzziness interval around the suspected position, depeding on the precision with which the ++ fuzziness interval around the suspected position, depending on the precision with which the + (sort-)key is known. + + \see removeBefore, removeAfter, clear +@@ -4412,7 +4412,7 @@ public: + there for an image of the presets. + */ + enum GradientPreset { gpGrayscale ///< Continuous lightness from black to white (suited for non-biased data representation) +- ,gpHot ///< Continuous lightness from black over firey colors to white (suited for non-biased data representation) ++ ,gpHot ///< Continuous lightness from black over fiery colors to white (suited for non-biased data representation) + ,gpCold ///< Continuous lightness from black over icey colors to white (suited for non-biased data representation) + ,gpNight ///< Continuous lightness from black over weak blueish colors to white (suited for non-biased data representation) + ,gpCandy ///< Blue over pink to white diff -Nru thermald-1.9.1/debian/patches/0136-Disable-legacy-rapl-cdev-when-rapl-mmio-is-in-use.patch thermald-1.9.1/debian/patches/0136-Disable-legacy-rapl-cdev-when-rapl-mmio-is-in-use.patch --- thermald-1.9.1/debian/patches/0136-Disable-legacy-rapl-cdev-when-rapl-mmio-is-in-use.patch 1970-01-01 00:00:00.000000000 +0000 +++ thermald-1.9.1/debian/patches/0136-Disable-legacy-rapl-cdev-when-rapl-mmio-is-in-use.patch 2021-06-28 14:22:24.000000000 +0000 @@ -0,0 +1,56 @@ +From 1ad03424f7f3d339521635f08377b323375b2747 Mon Sep 17 00:00:00 2001 +From: Srinivas Pandruvada +Date: Tue, 9 Mar 2021 11:36:27 -0800 +Subject: [PATCH] Disable legacy rapl cdev when rapl-mmio is in use +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: 8bit + +Explicitly disable legacy rapl based on MSR interface when rapl-mmio +is in use. This will prevent PL1/PL2 power limit from MSR based rapl, +which may not be the correct one. +--- + src/thd_cdev_rapl.h | 3 +-- + src/thd_engine_default.cpp | 5 ++++- + 2 files changed, 5 insertions(+), 3 deletions(-) + +diff --git a/src/thd_cdev_rapl.h b/src/thd_cdev_rapl.h +index 8e8c2d6..998c43e 100644 +--- a/src/thd_cdev_rapl.h ++++ b/src/thd_cdev_rapl.h +@@ -65,7 +65,6 @@ private: + int rapl_update_time_window(int time_window); + int rapl_update_pl2_time_window(int time_window); + int rapl_read_enable_status(); +- int rapl_update_enable_status(int enable); + + public: + static const int rapl_no_time_windows = 6; +@@ -114,7 +113,7 @@ public: + int get_phy_max_state() { + return phy_max; + } +- ++ int rapl_update_enable_status(int enable); + }; + + #endif /* THD_CDEV_RAPL_H_ */ +diff --git a/src/thd_engine_default.cpp b/src/thd_engine_default.cpp +index d57051e..c4beb3f 100644 +--- a/src/thd_engine_default.cpp ++++ b/src/thd_engine_default.cpp +@@ -727,8 +727,11 @@ int cthd_engine_default::read_cooling_devices() { + ++current_cdev_index; + + // Prefer MMIO access over MSR access for B0D4 +- if (rapl_dev) ++ if (rapl_dev) { + rapl_dev->set_cdev_alias(""); ++ thd_log_info("Disable rapl-msr interface and use rapl-mmio\n"); ++ rapl_dev->rapl_update_enable_status(0); ++ } + rapl_mmio_dev->set_cdev_alias("B0D4"); + } else { + delete rapl_mmio_dev; +-- +2.31.1 + diff -Nru thermald-1.9.1/debian/patches/0137-Delete-all-trips-from-zones-before-psvt-install.patch thermald-1.9.1/debian/patches/0137-Delete-all-trips-from-zones-before-psvt-install.patch --- thermald-1.9.1/debian/patches/0137-Delete-all-trips-from-zones-before-psvt-install.patch 1970-01-01 00:00:00.000000000 +0000 +++ thermald-1.9.1/debian/patches/0137-Delete-all-trips-from-zones-before-psvt-install.patch 2021-06-28 14:22:24.000000000 +0000 @@ -0,0 +1,57 @@ +From 660ee6f1f6351e6c291c0699147231be402c2bb8 Mon Sep 17 00:00:00 2001 +From: Srinivas Pandruvada +Date: Tue, 9 Mar 2021 16:33:08 -0800 +Subject: [PATCH] Delete all trips from zones before psvt install +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: 8bit + +Initially zones has all the trips from sysfs, which may have wrong +settings. Instead of deleting only for matched psvt zones, delete +for all zones. In this way only zones which are in PSVT will be +present. +--- + src/thd_engine_adaptive.cpp | 24 +++--------------------- + 1 file changed, 3 insertions(+), 21 deletions(-) + +Index: thermald-1.9.1/src/thd_engine_adaptive.cpp +=================================================================== +--- thermald-1.9.1.orig/src/thd_engine_adaptive.cpp ++++ thermald-1.9.1/src/thd_engine_adaptive.cpp +@@ -1263,27 +1263,6 @@ void cthd_engine_adaptive::set_int3400_t + return; + } + +- for (int i = 0; i < (int)psvt->psvs.size(); i++) { +- struct psv *psv = &psvt->psvs[i]; +- std::string psv_zone; +- +- size_t pos = psv->target.find_last_of("."); +- if (pos == std::string::npos) +- psv_zone = psv->target; +- else +- psv_zone = psv->target.substr(pos + 1); +- +- while (psv_zone.back() == '_') { +- psv_zone.pop_back(); +- } +- +- cthd_zone *zone = search_zone(psv_zone); +- if (zone) { +- zone->zone_reset(1); +- zone->trip_delete_all(); +- } +- } +- + for (unsigned int i = 0; i < zones.size(); ++i) { + cthd_zone *_zone = zones[i]; + +@@ -1291,6 +1270,9 @@ void cthd_engine_adaptive::set_int3400_t + if (_zone && _zone->get_zone_type() == "rapl_pkg_power") + continue; + ++ _zone->zone_reset(1); ++ _zone->trip_delete_all(); ++ + if (_zone && _zone->zone_active_status()) + _zone->set_zone_inactive(); + } diff -Nru thermald-1.9.1/debian/patches/0138-Check-for-alternate-names-for-B0D4-device.patch thermald-1.9.1/debian/patches/0138-Check-for-alternate-names-for-B0D4-device.patch --- thermald-1.9.1/debian/patches/0138-Check-for-alternate-names-for-B0D4-device.patch 1970-01-01 00:00:00.000000000 +0000 +++ thermald-1.9.1/debian/patches/0138-Check-for-alternate-names-for-B0D4-device.patch 2021-06-28 14:22:24.000000000 +0000 @@ -0,0 +1,41 @@ +From 9115f2fb0b296a22a62908f2718ca873af2a452f Mon Sep 17 00:00:00 2001 +From: Srinivas Pandruvada +Date: Tue, 9 Mar 2021 16:36:13 -0800 +Subject: [PATCH] Check for alternate names for B0D4 device +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: 8bit + +B0D4 can be named as TCPU or B0D4. So search for both names +if failed to find one. +--- + src/thd_engine_adaptive.cpp | 17 +++++++++++++++-- + 1 file changed, 15 insertions(+), 2 deletions(-) + +Index: thermald-1.9.1/src/thd_engine_adaptive.cpp +=================================================================== +--- thermald-1.9.1.orig/src/thd_engine_adaptive.cpp ++++ thermald-1.9.1/src/thd_engine_adaptive.cpp +@@ -1149,8 +1149,21 @@ int cthd_engine_adaptive::install_passiv + + cthd_zone *zone = search_zone(psv_zone); + if (!zone) { +- thd_log_warn("Unable to find a zone for %s\n", psv_zone.c_str()); +- return THD_ERROR; ++ if (!psv_zone.compare(0, 4, "B0D4")) { ++ psv_zone= "TCPU"; ++ zone = search_zone(psv_zone); ++ } ++ ++ if (!zone) { ++ if (!psv_zone.compare(0, 4, "TCPU")) { ++ psv_zone= "B0D4"; ++ zone = search_zone(psv_zone); ++ } ++ if (!zone) { ++ thd_log_warn("Unable to find a zone for %s\n", psv_zone.c_str()); ++ return THD_ERROR; ++ } ++ } + } + + std::string psv_cdev; diff -Nru thermald-1.9.1/debian/patches/0139-Fix-error-for-condition-names.patch thermald-1.9.1/debian/patches/0139-Fix-error-for-condition-names.patch --- thermald-1.9.1/debian/patches/0139-Fix-error-for-condition-names.patch 1970-01-01 00:00:00.000000000 +0000 +++ thermald-1.9.1/debian/patches/0139-Fix-error-for-condition-names.patch 2021-06-28 14:22:24.000000000 +0000 @@ -0,0 +1,37 @@ +From ea4491971059259e46daad10ae850d3d530b02f2 Mon Sep 17 00:00:00 2001 +From: Srinivas Pandruvada +Date: Thu, 11 Mar 2021 10:06:15 -0800 +Subject: [PATCH] Fix error for condition names +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: 8bit + +The current code caps the max name as the last condition name, +which is "Power_Slider". So any condition more than 56 will be +printing error, with "Power_Slider" as condition name. For example +for condition = 57: +Unsupported condition 57 (Power_slider) + +This is confusing during debug, so print "UNKNOWN" for condition +name 56. +--- + src/thd_engine_adaptive.cpp | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +Index: thermald-1.9.1/src/thd_engine_adaptive.cpp +=================================================================== +--- thermald-1.9.1.orig/src/thd_engine_adaptive.cpp ++++ thermald-1.9.1/src/thd_engine_adaptive.cpp +@@ -847,8 +847,12 @@ int cthd_engine_adaptive::verify_conditi + if (condition.condition == Power_slider) + return 0; + +- cond_name = condition_names[MIN(MAX(0, condition.condition), G_N_ELEMENTS(condition_names) - 1)]; ++ if ( condition.condition >= ARRAY_SIZE(condition_names)) ++ cond_name = "UKNKNOWN"; ++ else ++ cond_name = condition_names[condition.condition]; + thd_log_error("Unsupported condition %" PRIu64 " (%s)\n", condition.condition, cond_name); ++ + return THD_ERROR; + } + diff -Nru thermald-1.9.1/debian/patches/0140-Set-a-very-high-RAPL-MSR-PL1-with-adaptive.patch thermald-1.9.1/debian/patches/0140-Set-a-very-high-RAPL-MSR-PL1-with-adaptive.patch --- thermald-1.9.1/debian/patches/0140-Set-a-very-high-RAPL-MSR-PL1-with-adaptive.patch 1970-01-01 00:00:00.000000000 +0000 +++ thermald-1.9.1/debian/patches/0140-Set-a-very-high-RAPL-MSR-PL1-with-adaptive.patch 2021-06-28 14:22:24.000000000 +0000 @@ -0,0 +1,41 @@ +From 301a89284e9d74a9a1f8315c1673a548dcacda8c Mon Sep 17 00:00:00 2001 +From: Srinivas Pandruvada +Date: Sat, 29 May 2021 10:50:44 -0700 +Subject: [PATCH] Set a very high RAPL MSR PL1 with --adaptive +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: 8bit + +After upgrading Dell Latitude 5420, again noticed performance degradation. +The PPCC power limit for MSR RAPL PL1 is reduced to 15W. Even though we +disable MSR RAPL with --adaptive option, it is not getting disabled. So +MSR RAPL limits still playing role. + +To fix that set a very high MSR RAPL PL1 limit so that it never causes +throttling. All throttling with --adaptive option is done using RAPL-MMIO. +--- + src/thd_engine_default.cpp | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/src/thd_engine_default.cpp b/src/thd_engine_default.cpp +index c4beb3f..19ac01d 100644 +--- a/src/thd_engine_default.cpp ++++ b/src/thd_engine_default.cpp +@@ -728,9 +728,15 @@ int cthd_engine_default::read_cooling_devices() { + + // Prefer MMIO access over MSR access for B0D4 + if (rapl_dev) { ++ struct adaptive_target target; ++ + rapl_dev->set_cdev_alias(""); + thd_log_info("Disable rapl-msr interface and use rapl-mmio\n"); + rapl_dev->rapl_update_enable_status(0); ++ ++ target.code = "PL1MAX"; ++ target.argument = "100000"; ++ rapl_dev->set_adaptive_target(target); + } + rapl_mmio_dev->set_cdev_alias("B0D4"); + } else { +-- +2.31.1 + diff -Nru thermald-1.9.1/debian/patches/0141-Special-case-for-default-PSVT.patch thermald-1.9.1/debian/patches/0141-Special-case-for-default-PSVT.patch --- thermald-1.9.1/debian/patches/0141-Special-case-for-default-PSVT.patch 1970-01-01 00:00:00.000000000 +0000 +++ thermald-1.9.1/debian/patches/0141-Special-case-for-default-PSVT.patch 2021-06-28 14:22:24.000000000 +0000 @@ -0,0 +1,184 @@ +From 3de1004a49d0d157573bbdc1097b2fbed056879f Mon Sep 17 00:00:00 2001 +From: Srinivas Pandruvada +Date: Sun, 6 Jun 2021 19:19:15 -0700 +Subject: [PATCH] Special case for default PSVT +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: 8bit + +When there are no adaptive tables and only one default PSVT table +is present with just one entry with MAX type. Add one additional +entry as done for non default case. +--- + src/thd_engine_adaptive.cpp | 132 +++++++++++++++++++----------------- + src/thd_engine_adaptive.h | 1 + + 2 files changed, 69 insertions(+), 64 deletions(-) + +Index: thermald-1.9.1/src/thd_engine_adaptive.cpp +=================================================================== +--- thermald-1.9.1.orig/src/thd_engine_adaptive.cpp ++++ thermald-1.9.1/src/thd_engine_adaptive.cpp +@@ -1270,6 +1270,72 @@ void cthd_engine_adaptive::set_trip(std: + thd_log_warn("Unable to find a passive trippoint for %s\n", target.c_str()); + } + ++void cthd_engine_adaptive::psvt_consolidate() ++{ ++ /* Once all tables are installed, we need to consolidate since ++ * thermald has different implementation. ++ * If there is only entry of type MAX, then simply use thermald default at temperature + 1 ++ * If there is a next trip after MAX for a target, then choose a temperature limit in the middle ++ */ ++ for (unsigned int i = 0; i < zones.size(); ++i) { ++ cthd_zone *zone = zones[i]; ++ unsigned int count = zone->get_trip_count(); ++ ++ for (unsigned int j = 0; j < count; ++j) { ++ cthd_trip_point *trip = zone->get_trip_at_index(j); ++ int target_state; ++ thd_log_debug("check trip zone:%d:%d\n", i, j); ++ if (trip->is_target_valid(target_state) == THD_SUCCESS) { ++ ++ if (target_state == TRIP_PT_INVALID_TARGET_STATE) { ++ if (j == count - 1) { ++ // This is the last "MAX" trip ++ // So make the target state invalid and temperature + 1 C ++ trip->set_first_target_invalid(); ++ trip->update_trip_temp(trip->get_trip_temp() + 1000); ++ } else { ++ // This is not the last trip. So something after this ++ // if the next one has the same source and target ++ cthd_trip_point *next_trip = zone->get_trip_at_index( ++ j + 1); ++ // Sinc this is not the last trip in this zone, we don't check ++ // exception, next trip will be valid ++ cthd_cdev *cdev = next_trip->get_first_cdev(); ++ if (!cdev) { ++ // Something wrong make the current target invalid ++ trip->set_first_target_invalid(); ++ trip->update_trip_temp( ++ trip->get_trip_temp() + 1000); ++ continue; ++ } ++ ++ int next_target_state; ++ ++ if (trip->get_sensor_id() ++ == next_trip->get_sensor_id() && trip->get_first_cdev() ++ == next_trip->get_first_cdev() && next_trip->is_target_valid(next_target_state) == THD_SUCCESS) { ++ ++ // Same source and target and the target state of next is not of type MAX ++ int state = cdev->get_min_state(); ++ target_state = (state + next_target_state) / 2; ++ trip->set_first_target(target_state); ++ trip->update_trip_temp( ++ (next_trip->get_trip_temp() ++ + trip->get_trip_temp()) / 2); ++ } else { ++ // It has different source and target so ++ // So make the target state invalid and temperature + 1 C ++ trip->set_first_target_invalid(); ++ trip->update_trip_temp( ++ trip->get_trip_temp() + 1000); ++ } ++ } ++ } ++ } ++ } ++ } ++} ++ + void cthd_engine_adaptive::set_int3400_target(struct adaptive_target target) { + struct psvt *psvt; + if (target.code == "PSVT") { +@@ -1298,69 +1364,7 @@ void cthd_engine_adaptive::set_int3400_t + install_passive(&psvt->psvs[i]); + } + +- /* Once all tables are installed, we need to consolidate since +- * thermald has different implementation. +- * If there is only entry of type MAX, then simply use thermald default at temperature + 1 +- * If there is a next trip after MAX for a target, then choose a temperature limit in the middle +- */ +- for (unsigned int i = 0; i < zones.size(); ++i) { +- cthd_zone *zone = zones[i]; +- unsigned int count = zone->get_trip_count(); +- +- for (unsigned int j = 0; j < count; ++j) { +- cthd_trip_point *trip = zone->get_trip_at_index(j); +- int target_state; +- thd_log_debug("check trip zone:%d:%d\n", i, j); +- if (trip->is_target_valid(target_state) == THD_SUCCESS) { +- +- if (target_state == TRIP_PT_INVALID_TARGET_STATE) { +- if (j == count - 1) { +- // This is the last "MAX" trip +- // So make the target state invalid and temperature + 1 C +- trip->set_first_target_invalid(); +- trip->update_trip_temp( +- trip->get_trip_temp() + 1000); +- } else { +- // This is not the last trip. So something after this +- // if the next one has the same source and target +- cthd_trip_point *next_trip = +- zone->get_trip_at_index(j + 1); +- // Sinc this is not the last trip in this zone, we don't check +- // exception, next trip will be valid +- cthd_cdev *cdev = next_trip->get_first_cdev(); +- if (!cdev) { +- // Something wrong make the current target invalid +- trip->set_first_target_invalid(); +- trip->update_trip_temp( +- trip->get_trip_temp() + 1000); +- continue; +- } +- +- int next_target_state; +- +- if (trip->get_sensor_id() +- == next_trip->get_sensor_id() && trip->get_first_cdev() +- == next_trip->get_first_cdev() && next_trip->is_target_valid(next_target_state) == THD_SUCCESS) { +- +- // Same source and target and the target state of next is not of type MAX +- int state = cdev->get_min_state(); +- target_state = (state + next_target_state) / 2; +- trip->set_first_target(target_state); +- trip->update_trip_temp( +- (next_trip->get_trip_temp() +- + trip->get_trip_temp()) / 2); +- } else { +- // It has different source and target so +- // So make the target state invalid and temperature + 1 C +- trip->set_first_target_invalid(); +- trip->update_trip_temp( +- trip->get_trip_temp() + 1000); +- } +- } +- } +- } +- } +- } ++ psvt_consolidate(); + + thd_log_info("\n\n ZONE DUMP BEGIN\n"); + int new_zone_count = 0; +@@ -1466,7 +1470,7 @@ void cthd_engine_adaptive::update_engine + for (unsigned int j = 0; j < psvs.size(); ++j) { + install_passive(&psvs[j]); + } +- ++ psvt_consolidate(); + thd_log_info("\n\n ZONE DUMP BEGIN\n"); + for (unsigned int i = 0; i < zones.size(); ++i) { + zones[i]->zone_dump(); +Index: thermald-1.9.1/src/thd_engine_adaptive.h +=================================================================== +--- thermald-1.9.1.orig/src/thd_engine_adaptive.h ++++ thermald-1.9.1/src/thd_engine_adaptive.h +@@ -177,6 +177,7 @@ protected: + int parse_gddv(char *buf, int size, int *end_offset); + struct psvt* find_psvt(std::string name); + int install_passive(struct psv *psv); ++ void psvt_consolidate(); + void set_trip(std::string device, std::string argument); + void set_int3400_target(struct adaptive_target target); + int verify_condition(struct condition condition); diff -Nru thermald-1.9.1/debian/patches/0142-Increase-power-limit-for-disabled-RAPL-MMIO.patch thermald-1.9.1/debian/patches/0142-Increase-power-limit-for-disabled-RAPL-MMIO.patch --- thermald-1.9.1/debian/patches/0142-Increase-power-limit-for-disabled-RAPL-MMIO.patch 1970-01-01 00:00:00.000000000 +0000 +++ thermald-1.9.1/debian/patches/0142-Increase-power-limit-for-disabled-RAPL-MMIO.patch 2021-06-28 14:22:24.000000000 +0000 @@ -0,0 +1,29 @@ +From 2dd67300448fa4a2aa8f3e00ee5b604c73a1f7d9 Mon Sep 17 00:00:00 2001 +From: Srinivas Pandruvada +Date: Mon, 7 Jun 2021 16:45:14 -0700 +Subject: [PATCH] Increase power limit for disabled RAPL-MMIO +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: 8bit + +Increase 100W to 200W as some desktop platform already have limit +more than 100W. +--- + src/thd_engine_default.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/thd_engine_default.cpp b/src/thd_engine_default.cpp +index 19ac01d..f76b9b1 100644 +--- a/src/thd_engine_default.cpp ++++ b/src/thd_engine_default.cpp +@@ -735,7 +735,7 @@ int cthd_engine_default::read_cooling_devices() { + rapl_dev->rapl_update_enable_status(0); + + target.code = "PL1MAX"; +- target.argument = "100000"; ++ target.argument = "200000"; + rapl_dev->set_adaptive_target(target); + } + rapl_mmio_dev->set_cdev_alias("B0D4"); +-- +2.31.1 + diff -Nru thermald-1.9.1/debian/patches/0143-Use-Adaptive-PPCC-limits-for-RAPL-MMIO.patch thermald-1.9.1/debian/patches/0143-Use-Adaptive-PPCC-limits-for-RAPL-MMIO.patch --- thermald-1.9.1/debian/patches/0143-Use-Adaptive-PPCC-limits-for-RAPL-MMIO.patch 1970-01-01 00:00:00.000000000 +0000 +++ thermald-1.9.1/debian/patches/0143-Use-Adaptive-PPCC-limits-for-RAPL-MMIO.patch 2021-06-28 14:22:24.000000000 +0000 @@ -0,0 +1,26 @@ +From 273a53a11da2a7302ad7a5bc7e3bf04f221ce4e2 Mon Sep 17 00:00:00 2001 +From: Srinivas Pandruvada +Date: Mon, 7 Jun 2021 16:47:47 -0700 +Subject: [PATCH] Use Adaptive PPCC limits for RAPL MMIO +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: 8bit + +Set the correct device name as RAPL-MSR so that RAPL-MMIO can +also set the correct default power limits. +--- + src/thd_cdev_rapl.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: thermald-1.9.1/src/thd_cdev_rapl.h +=================================================================== +--- thermald-1.9.1.orig/src/thd_cdev_rapl.h ++++ thermald-1.9.1/src/thd_cdev_rapl.h +@@ -97,7 +97,7 @@ public: + 0), pl0_min_window(0), pl0_step_pwr(0), bios_locked( + false), constrained( + false), power_on_constraint_0_pwr(0), power_on_constraint_0_time_window( +- 0), power_on_enable_status(0) ++ 0), power_on_enable_status(0), device_name("TCPU.D0") + { + } + diff -Nru thermald-1.9.1/debian/patches/series thermald-1.9.1/debian/patches/series --- thermald-1.9.1/debian/patches/series 2021-01-12 14:41:57.000000000 +0000 +++ thermald-1.9.1/debian/patches/series 2021-06-28 14:22:24.000000000 +0000 @@ -131,3 +131,12 @@ 0132-adaptive-Fix-missing-initializer.patch 0133-adaptive-Fix-use-after-free.patch 0134-adaptive-Remove-useless-NULL-check.patch +0135-Fix-spelling-mistakes-found-using-codespell.patch +0136-Disable-legacy-rapl-cdev-when-rapl-mmio-is-in-use.patch +0137-Delete-all-trips-from-zones-before-psvt-install.patch +0138-Check-for-alternate-names-for-B0D4-device.patch +0139-Fix-error-for-condition-names.patch +0140-Set-a-very-high-RAPL-MSR-PL1-with-adaptive.patch +0141-Special-case-for-default-PSVT.patch +0142-Increase-power-limit-for-disabled-RAPL-MMIO.patch +0143-Use-Adaptive-PPCC-limits-for-RAPL-MMIO.patch