aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ramips/patches-4.14/0013-owrt-hack-fix-mt7688-cache-issue.patch
diff options
context:
space:
mode:
authorSungbo Eo <mans0n@gorani.run>2020-03-05 22:57:29 +0900
committerAdrian Schmutzler <freifunk@adrianschmutzler.de>2020-03-11 19:40:03 +0100
commit228bb84744589efa38ebddd7a75bf97de6789aeb (patch)
tree0b9ed1ececdc0dda9b3c72885897b23cf6332b4f /target/linux/ramips/patches-4.14/0013-owrt-hack-fix-mt7688-cache-issue.patch
parent95c1fce821c37d5afcd84df92b58c5ae184f8bcd (diff)
downloadupstream-less-old-master.tar.gz
upstream-less-old-master.tar.bz2
upstream-less-old-master.zip
kernel: make kmod-ata-core selected by dependent modulesupstreamless-old-master
Currently kmod-ata-* will not get into images unless kmod-ata-core is added to DEVICE_PACKAGES as well. By changing the dependencies from "depends on" to "select", we do not have the issue anymore. Furthermore, we can remove most occurrences of the package from DEVICE_PACKAGES and similar variables, as it is now pulled by dependent modules such as: - kmod-ata-ahci - kmod-ata-ahci-mtk - kmod-ata-sunxi While at it, use AddDepends/ata for kmod-ata-pdc202xx-old. Signed-off-by: Sungbo Eo <mans0n@gorani.run>
Diffstat (limited to 'target/linux/ramips/patches-4.14/0013-owrt-hack-fix-mt7688-cache-issue.patch')
0 files changed, 0 insertions, 0 deletions
76'>176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236
Pattern Matcher Generator
=========================

The program `pmgen.py` reads a `.pmg` (Pattern Matcher Generator) file and
writes a header-only C++ library that implements that pattern matcher.

The "patterns" in this context are subgraphs in a Yosys RTLIL netlist.

The algorithm used in the generated pattern matcher is a simple recursive
search with backtracking. It is left to the author of the `.pmg` file to
determine an efficient cell order for the search that allows for maximum
use of indices and early backtracking.


API of Generated Matcher
========================

When `pmgen.py` reads a `foobar.pmg` file, it writes `foobar_pm.h` containing
a class `foobar_pm`. That class is instantiated with an RTLIL module and a
list of cells from that module:

    foobar_pm pm(module, module->selected_cells());

The caller must make sure that none of the cells in the 2nd argument are
deleted for as long as the patter matcher instance is used.

At any time it is possible to disable cells, preventing them from showing
up in any future matches:

    pm.blacklist(some_cell);

The `.run_<pattern_name>(callback_function)` method searches for all matches
for the pattern`<pattern_name>` and calls the callback function for each found
match:

    pm.run_foobar([&](){
        log("found matching 'foo' cell: %s\n", log_id(pm.st.foo));
        log("          with 'bar' cell: %s\n", log_id(pm.st.bar));
    });

The `.pmg` file declares matcher state variables that are accessible via the
`.st_<pattern_name>.<state_name>` members. (The `.st_<pattern_name>` member is
of type `foobar_pm::state_<pattern_name>_t`.)

Similarly the `.pmg` file declares user data variables that become members of
`.ud_<pattern_name>`, a struct of type `foobar_pm::udata_<pattern_name>_t`.

There are four versions of the `run_<pattern_name>()` method: Without callback,
callback without arguments, callback with reference to `pm`, and callback with
reference to `pm.st_<pattern_name>`.


The .pmg File Format
====================

The `.pmg` file format is a simple line-based file format. For the most part