- Dec 2024
-
medium.com medium.com
-
why is it that we’re not focusing on those movements as the source of our strength and our organizing? It’s because we have a discourse framed around elite policy institutions that make them the primary actors and the coordination of mostly market mechanisms
for - climate crisis - climate communications - large social movements fizzle out - first framing element - elite policy institutions and businesses are seen as the primary actors - Joe Brewer
-
I feel like sharing with you some of my observations as a frame analyst, as someone who analyzes semantic frames and how they structure a discourse to, in this case, to disempower us and keep us embedded within a conversation that is primarily about the actions of corporations and nation-states and that disengages us from direct grassroots action and taking power into our own hands
for - adjacency / validation - for justifying Tipping Point Festival - TPF - bottom up, grassroots direct action Vs - top down, corporate, policy action - Joe Brewer - framing analysis - using cognitive linguistics
adjacency / validation - between - ustifying Tipping Point Festival - TPF - - bottom up, grassroots direct action<br /> - top down, corporate, policy action<br /> - Joe Brewer - framing analysis - cognitive linguistics - adjacency relationship - We need both bottom up and top down section, but Joe's framing analysis provides an explanation why there isn't more bottom up direct action - It requires a lot of skill to find the leverage points as well as the weakness of people power is lack of money - To awaken the sleeping giant off the commons is the purpose of the Typing Point Festival (TPF)
Tags
- climate crisis - climate communications - large social movements fizzle out - first framing element - elite policy institutions and businesses are seen as the primary actors - Joe Brewer
- validation - for justifying Tipping Point Festival - TPF - bottom up, grassroots direct action Vs - top down, corporate, policy action - Joe Brewer - framing analysis - using cognitive linguistics
Annotators
URL
-
-
bandcamp.com bandcamp.com
-
Bandcamp will not use, and will not permit others to use, any Artist’s Music to train models to generate sound recordings, videos synchronized with sound recordings or other audiovisual works, or musical works embodied within sound recordings and music videos, without that Artist’s express permission.
-
- Nov 2024
-
simpol.org simpol.org
-
for - SIMPOL - SIMultanous POLicy - John Bunzl - SIMPOL - conditional agreement strategy for addressing policy gridlock
-
-
www.youtube.com www.youtube.com
-
that's why they have the chips act because they want to reduce Your Capacity to invest in this super highway and make it attractive for everybody else this is why they are creating circumstances of choking anyone outside the United States wants to trade with China because they don't want this Super Highway way so it's not that China is getting bigger it is not that China is spying it is not Taiwan it is that China has built a digital Cloud Capital based super highway for payments which is a clear and prais danger to the Monopoly of the dollar payment system which is the only reason why the United States is hegemonic
for - key insight - US hegemonic foreign policy - for cold war with China - in order to protect the US global reserve currency - Yanis Varoufakis - Yanis Varoufakis provides a key insight here about the reason for the US cold war with China - Yanis validates his one party claim by saying that the clashing economic fiefdoms of - big tech (Silicon Valley) and - Wall street - are both antagonistic towards China - Biden's Chips Act and - Trump's huge Tariffs - are both continuations of the cold war towards China
-
will that not affect the value of the dollar he said no not as long as it is the only World Reserve currency the only currency that has demand people demand it even if they don't want to buy anything from the country which is producing it which is printing it
for - key strategy - US foreign policy - US dollar don't devalue as long as it is the world's reserve currency - even if they don't want to buy from you - Yanis Varoufakis
-
one man in his half a page which I actually acquired in the process of writing a book 15 years ago typ written a typewritten half a page he said what we must do we must treble our deficit treble our deficit we have a deficit which is bad we must make it three times as big and make the capitalists of the rest of the world pay for it which is exactly what happened the United States should increase its deficit and use it to create aggregate demand for the net exports of Germany and Japan and later on China
for - US foreign policy - National Security Council member suggested - triple the deficit too act as a magnet to draw in experts of other countries - Yanis Varoufakis
-
why did the Clinton Administration and the Bush Administration after that were so gangho about trading with China why did they not start the new Cold War against China in the 1990s in the year 2000 in 2004 2005 200 8 why was it only around 2014 that this establishment decided to unleash the war against China
for - key insight - key question - why did US foreign policy against China switch only in 2014? - Yanis Varoufakis
-
the whole point of the Nixon Administration was to split the Soviet Union from China and therefore win the Cold War so they're critical of the support of Ukraine and of Israel because they think that this simply disorient the United States policy
for - further research - UD foreign policy - Ukraine - Israel - China - Russia - Nixon - Yanis Varoufakis
Tags
- US foreign policy - National Security Council member suggested - triple the deficit too act as a magnet to draw in experts of other countries - Yanis Varoufakis
- key insight - US hegemonic foreign policy - for cold war with China - in order to protect the US global reserve currency - Yanis Varoufakis
- key insight - key question - why did US foreign policy against China switch only in 2014? - Yanis Varoufakis
- key strategy - US foreign policy - US dollar don't devalue as long as it is the world's reserve currency - even if they don't want to buy from you - Yanis Varoufakis
- - further research - UD foreign policy - Ukraine - Israel - China - Russia - Nixon - Yanis Varoufakis
Annotators
URL
-
-
-
TRSP Desirable Characteristics
Policy that details how the preservation of the data is ensured: does the repository have a page, or document that describes this?
Tags
Annotators
URL
-
-
-
TRSP Desirable Characteristics
Policies that explain the repository’s commitment and processes that ensure the long-term preservation, fitness, and availability of datasets.
-
TRSP Desirable Characteristics
Policies for who can view and access a dataset and under what conditions.
-
TRSP Desirable Characteristics
Policies that explain what datasets the repository will accept for deposit, from whom, and under what conditions, including costs.
-
-
elixir.bootlin.com elixir.bootlin.com
-
#ifdef CONFIG_ARCH_HAS_HUGEPD static unsigned long hugepte_addr_end(unsigned long addr, unsigned long end, unsigned long sz) { unsigned long __boundary = (addr + sz) & ~(sz-1); return (__boundary - 1 < end - 1) ? __boundary : end; } static int gup_hugepte(pte_t *ptep, unsigned long sz, unsigned long addr, unsigned long end, unsigned int flags, struct page **pages, int *nr) { unsigned long pte_end; struct page *page; struct folio *folio; pte_t pte; int refs; pte_end = (addr + sz) & ~(sz-1); if (pte_end < end) end = pte_end; pte = huge_ptep_get(ptep); if (!pte_access_permitted(pte, flags & FOLL_WRITE)) return 0; /* hugepages are never "special" */ VM_BUG_ON(!pfn_valid(pte_pfn(pte))); page = nth_page(pte_page(pte), (addr & (sz - 1)) >> PAGE_SHIFT); refs = record_subpages(page, addr, end, pages + *nr); folio = try_grab_folio(page, refs, flags); if (!folio) return 0; if (unlikely(pte_val(pte) != pte_val(ptep_get(ptep)))) { gup_put_folio(folio, refs, flags); return 0; } if (!folio_fast_pin_allowed(folio, flags)) { gup_put_folio(folio, refs, flags); return 0; } if (!pte_write(pte) && gup_must_unshare(NULL, flags, &folio->page)) { gup_put_folio(folio, refs, flags); return 0; } *nr += refs; folio_set_referenced(folio); return 1; } static int gup_huge_pd(hugepd_t hugepd, unsigned long addr, unsigned int pdshift, unsigned long end, unsigned int flags, struct page **pages, int *nr) { pte_t *ptep; unsigned long sz = 1UL << hugepd_shift(hugepd); unsigned long next; ptep = hugepte_offset(hugepd, addr, pdshift); do { next = hugepte_addr_end(addr, end, sz); if (!gup_hugepte(ptep, sz, addr, end, flags, pages, nr)) return 0; } while (ptep++, addr = next, addr != end); return 1; } #else static inline int gup_huge_pd(hugepd_t hugepd, unsigned long addr, unsigned int pdshift, unsigned long end, unsigned int flags, struct page **pages, int *nr) { return 0; } #endif /* CONFIG_ARCH_HAS_HUGEPD */ static int gup_huge_pmd(pmd_t orig, pmd_t *pmdp, unsigned long addr, unsigned long end, unsigned int flags, struct page **pages, int *nr) { struct page *page; struct folio *folio; int refs; if (!pmd_access_permitted(orig, flags & FOLL_WRITE)) return 0; if (pmd_devmap(orig)) { if (unlikely(flags & FOLL_LONGTERM)) return 0; return __gup_device_huge_pmd(orig, pmdp, addr, end, flags, pages, nr); } page = nth_page(pmd_page(orig), (addr & ~PMD_MASK) >> PAGE_SHIFT); refs = record_subpages(page, addr, end, pages + *nr); folio = try_grab_folio(page, refs, flags); if (!folio) return 0; if (unlikely(pmd_val(orig) != pmd_val(*pmdp))) { gup_put_folio(folio, refs, flags); return 0; } if (!folio_fast_pin_allowed(folio, flags)) { gup_put_folio(folio, refs, flags); return 0; } if (!pmd_write(orig) && gup_must_unshare(NULL, flags, &folio->page)) { gup_put_folio(folio, refs, flags); return 0; } *nr += refs; folio_set_referenced(folio); return 1; } static int gup_huge_pud(pud_t orig, pud_t *pudp, unsigned long addr, unsigned long end, unsigned int flags, struct page **pages, int *nr) { struct page *page; struct folio *folio; int refs; if (!pud_access_permitted(orig, flags & FOLL_WRITE)) return 0; if (pud_devmap(orig)) { if (unlikely(flags & FOLL_LONGTERM)) return 0; return __gup_device_huge_pud(orig, pudp, addr, end, flags, pages, nr); } page = nth_page(pud_page(orig), (addr & ~PUD_MASK) >> PAGE_SHIFT); refs = record_subpages(page, addr, end, pages + *nr); folio = try_grab_folio(page, refs, flags); if (!folio) return 0; if (unlikely(pud_val(orig) != pud_val(*pudp))) { gup_put_folio(folio, refs, flags); return 0; } if (!folio_fast_pin_allowed(folio, flags)) { gup_put_folio(folio, refs, flags); return 0; } if (!pud_write(orig) && gup_must_unshare(NULL, flags, &folio->page)) { gup_put_folio(folio, refs, flags); return 0; } *nr += refs; folio_set_referenced(folio); return 1; } static int gup_huge_pgd(pgd_t orig, pgd_t *pgdp, unsigned long addr, unsigned long end, unsigned int flags, struct page **pages, int *nr) { int refs; struct page *page; struct folio *folio; if (!pgd_access_permitted(orig, flags & FOLL_WRITE)) return 0; BUILD_BUG_ON(pgd_devmap(orig)); page = nth_page(pgd_page(orig), (addr & ~PGDIR_MASK) >> PAGE_SHIFT); refs = record_subpages(page, addr, end, pages + *nr); folio = try_grab_folio(page, refs, flags); if (!folio) return 0; if (unlikely(pgd_val(orig) != pgd_val(*pgdp))) { gup_put_folio(folio, refs, flags); return 0; } if (!pgd_write(orig) && gup_must_unshare(NULL, flags, &folio->page)) { gup_put_folio(folio, refs, flags); return 0; } if (!folio_fast_pin_allowed(folio, flags)) { gup_put_folio(folio, refs, flags); return 0; } *nr += refs; folio_set_referenced(folio); return 1; } static int gup_pmd_range(pud_t *pudp, pud_t pud, unsigned long addr, unsigned long end, unsigned int flags, struct page **pages, int *nr) { unsigned long next; pmd_t *pmdp; pmdp = pmd_offset_lockless(pudp, pud, addr); do { pmd_t pmd = pmdp_get_lockless(pmdp); next = pmd_addr_end(addr, end); if (!pmd_present(pmd)) return 0; if (unlikely(pmd_trans_huge(pmd) || pmd_huge(pmd) || pmd_devmap(pmd))) { /* See gup_pte_range() */ if (pmd_protnone(pmd)) return 0; if (!gup_huge_pmd(pmd, pmdp, addr, next, flags, pages, nr)) return 0; } else if (unlikely(is_hugepd(__hugepd(pmd_val(pmd))))) { /* * architecture have different format for hugetlbfs * pmd format and THP pmd format */ if (!gup_huge_pd(__hugepd(pmd_val(pmd)), addr, PMD_SHIFT, next, flags, pages, nr)) return 0; } else if (!gup_pte_range(pmd, pmdp, addr, next, flags, pages, nr)) return 0; } while (pmdp++, addr = next, addr != end); return 1; } static int gup_pud_range(p4d_t *p4dp, p4d_t p4d, unsigned long addr, unsigned long end, unsigned int flags, struct page **pages, int *nr) { unsigned long next; pud_t *pudp; pudp = pud_offset_lockless(p4dp, p4d, addr); do { pud_t pud = READ_ONCE(*pudp); next = pud_addr_end(addr, end); if (unlikely(!pud_present(pud))) return 0; if (unlikely(pud_huge(pud) || pud_devmap(pud))) { if (!gup_huge_pud(pud, pudp, addr, next, flags, pages, nr)) return 0; } else if (unlikely(is_hugepd(__hugepd(pud_val(pud))))) { if (!gup_huge_pd(__hugepd(pud_val(pud)), addr, PUD_SHIFT, next, flags, pages, nr)) return 0; } else if (!gup_pmd_range(pudp, pud, addr, next, flags, pages, nr)) return 0; } while (pudp++, addr = next, addr != end); return 1; } static int gup_p4d_range(pgd_t *pgdp, pgd_t pgd, unsigned long addr, unsigned long end, unsigned int flags, struct page **pages, int *nr) { unsigned long next; p4d_t *p4dp; p4dp = p4d_offset_lockless(pgdp, pgd, addr); do { p4d_t p4d = READ_ONCE(*p4dp); next = p4d_addr_end(addr, end); if (p4d_none(p4d)) return 0; BUILD_BUG_ON(p4d_huge(p4d)); if (unlikely(is_hugepd(__hugepd(p4d_val(p4d))))) { if (!gup_huge_pd(__hugepd(p4d_val(p4d)), addr, P4D_SHIFT, next, flags, pages, nr)) return 0; } else if (!gup_pud_range(p4dp, p4d, addr, next, flags, pages, nr)) return 0; } while (p4dp++, addr = next, addr != end); return 1; } static void gup_pgd_range(unsigned long addr, unsigned long end, unsigned int flags, struct page **pages, int *nr) { unsigned long next; pgd_t *pgdp; pgdp = pgd_offset(current->mm, addr); do { pgd_t pgd = READ_ONCE(*pgdp); next = pgd_addr_end(addr, end); if (pgd_none(pgd)) return; if (unlikely(pgd_huge(pgd))) { if (!gup_huge_pgd(pgd, pgdp, addr, next, flags, pages, nr)) return; } else if (unlikely(is_hugepd(__hugepd(pgd_val(pgd))))) { if (!gup_huge_pd(__hugepd(pgd_val(pgd)), addr, PGDIR_SHIFT, next, flags, pages, nr)) return; } else if (!gup_p4d_range(pgdp, pgd, addr, next, flags, pages, nr)) return; } while (pgdp++, addr = next, addr != end); } #else static inline void gup_pgd_range(unsigned long addr, unsigned long end, unsigned int flags, struct page **pages, int *nr) { }
policy use functions for gup_huge pte policy code function above (not right above, gotta scroll probably to find it)
-
static int internal_get_user_pages_fast(unsigned long start, unsigned long nr_pages, unsigned int gup_flags, struct page **pages) { unsigned long len, end; unsigned long nr_pinned; int locked = 0; int ret; if (WARN_ON_ONCE(gup_flags & ~(FOLL_WRITE | FOLL_LONGTERM | FOLL_FORCE | FOLL_PIN | FOLL_GET | FOLL_FAST_ONLY | FOLL_NOFAULT | FOLL_PCI_P2PDMA | FOLL_HONOR_NUMA_FAULT))) return -EINVAL; if (gup_flags & FOLL_PIN) mm_set_has_pinned_flag(¤t->mm->flags); if (!(gup_flags & FOLL_FAST_ONLY)) might_lock_read(¤t->mm->mmap_lock); start = untagged_addr(start) & PAGE_MASK; len = nr_pages << PAGE_SHIFT; if (check_add_overflow(start, len, &end)) return -EOVERFLOW; if (end > TASK_SIZE_MAX) return -EFAULT; if (unlikely(!access_ok((void __user *)start, len))) return -EFAULT; nr_pinned = lockless_pages_from_mm(start, end, gup_flags, pages); if (nr_pinned == nr_pages || gup_flags & FOLL_FAST_ONLY) return nr_pinned; /* Slow path: try to get the remaining pages with get_user_pages */ start += nr_pinned << PAGE_SHIFT; pages += nr_pinned; ret = __gup_longterm_locked(current->mm, start, nr_pages - nr_pinned, pages, &locked, gup_flags | FOLL_TOUCH | FOLL_UNLOCKABLE); if (ret < 0) { /* * The caller has to unpin the pages we already pinned so * returning -errno is not an option */ if (nr_pinned) return nr_pinned; return ret; } return ret + nr_pinned; } /** * get_user_pages_fast_only() - pin user pages in memory * @start: starting user address * @nr_pages: number of pages from start to pin * @gup_flags: flags modifying pin behaviour * @pages: array that receives pointers to the pages pinned. * Should be at least nr_pages long. * * Like get_user_pages_fast() except it's IRQ-safe in that it won't fall back to * the regular GUP. * * If the architecture does not support this function, simply return with no * pages pinned. * * Careful, careful! COW breaking can go either way, so a non-write * access can get ambiguous page results. If you call this function without * 'write' set, you'd better be sure that you're ok with that ambiguity. */ int get_user_pages_fast_only(unsigned long start, int nr_pages, unsigned int gup_flags, struct page **pages) { /* * Internally (within mm/gup.c), gup fast variants must set FOLL_GET, * because gup fast is always a "pin with a +1 page refcount" request. * * FOLL_FAST_ONLY is required in order to match the API description of * this routine: no fall back to regular ("slow") GUP. */ if (!is_valid_gup_args(pages, NULL, &gup_flags, FOLL_GET | FOLL_FAST_ONLY)) return -EINVAL; return internal_get_user_pages_fast(start, nr_pages, gup_flags, pages); } EXPORT_SYMBOL_GPL(get_user_pages_fast_only); /** * get_user_pages_fast() - pin user pages in memory * @start: starting user address * @nr_pages: number of pages from start to pin * @gup_flags: flags modifying pin behaviour * @pages: array that receives pointers to the pages pinned. * Should be at least nr_pages long. * * Attempt to pin user pages in memory without taking mm->mmap_lock. * If not successful, it will fall back to taking the lock and * calling get_user_pages(). * * Returns number of pages pinned. This may be fewer than the number requested. * If nr_pages is 0 or negative, returns 0. If no pages were pinned, returns * -errno. */ int get_user_pages_fast(unsigned long start, int nr_pages, unsigned int gup_flags, struct page **pages) { /* * The caller may or may not have explicitly set FOLL_GET; either way is * OK. However, internally (within mm/gup.c), gup fast variants must set * FOLL_GET, because gup fast is always a "pin with a +1 page refcount" * request. */ if (!is_valid_gup_args(pages, NULL, &gup_flags, FOLL_GET)) return -EINVAL; return internal_get_user_pages_fast(start, nr_pages, gup_flags, pages); } EXPORT_SYMBOL_GPL(get_user_pages_fast); /** * pin_user_pages_fast() - pin user pages in memory without taking locks * * @start: starting user address * @nr_pages: number of pages from start to pin * @gup_flags: flags modifying pin behaviour * @pages: array that receives pointers to the pages pinned. * Should be at least nr_pages long. * * Nearly the same as get_user_pages_fast(), except that FOLL_PIN is set. See * get_user_pages_fast() for documentation on the function arguments, because * the arguments here are identical. * * FOLL_PIN means that the pages must be released via unpin_user_page(). Please * see Documentation/core-api/pin_user_pages.rst for further details. * * Note that if a zero_page is amongst the returned pages, it will not have * pins in it and unpin_user_page() will not remove pins from it. */ int pin_user_pages_fast(unsigned long start, int nr_pages, unsigned int gup_flags, struct page **pages) { if (!is_valid_gup_args(pages, NULL, &gup_flags, FOLL_PIN)) return -EINVAL; return internal_get_user_pages_fast(start, nr_pages, gup_flags, pages); } EXPORT_SYMBOL_GPL(pin_user_pages_fast); /** * pin_user_pages_remote() - pin pages of a remote process * * @mm: mm_struct of target mm * @start: starting user address * @nr_pages: number of pages from start to pin * @gup_flags: flags modifying lookup behaviour * @pages: array that receives pointers to the pages pinned. * Should be at least nr_pages long. * @locked: pointer to lock flag indicating whether lock is held and * subsequently whether VM_FAULT_RETRY functionality can be * utilised. Lock must initially be held. * * Nearly the same as get_user_pages_remote(), except that FOLL_PIN is set. See * get_user_pages_remote() for documentation on the function arguments, because * the arguments here are identical. * * FOLL_PIN means that the pages must be released via unpin_user_page(). Please * see Documentation/core-api/pin_user_pages.rst for details. * * Note that if a zero_page is amongst the returned pages, it will not have * pins in it and unpin_user_page*() will not remove pins from it. */ long pin_user_pages_remote(struct mm_struct *mm, unsigned long start, unsigned long nr_pages, unsigned int gup_flags, struct page **pages, int *locked) { int local_locked = 1; if (!is_valid_gup_args(pages, locked, &gup_flags, FOLL_PIN | FOLL_TOUCH | FOLL_REMOTE)) return 0; return __gup_longterm_locked(mm, start, nr_pages, pages, locked ? locked : &local_locked, gup_flags); } EXPORT_SYMBOL(pin_user_pages_remote); /** * pin_user_pages() - pin user pages in memory for use by other devices * * @start: starting user address * @nr_pages: number of pages from start to pin * @gup_flags: flags modifying lookup behaviour * @pages: array that receives pointers to the pages pinned. * Should be at least nr_pages long. * * Nearly the same as get_user_pages(), except that FOLL_TOUCH is not set, and * FOLL_PIN is set. * * FOLL_PIN means that the pages must be released via unpin_user_page(). Please * see Documentation/core-api/pin_user_pages.rst for details. * * Note that if a zero_page is amongst the returned pages, it will not have * pins in it and unpin_user_page*() will not remove pins from it. */ long pin_user_pages(unsigned long start, unsigned long nr_pages, unsigned int gup_flags, struct page **pages) { int locked = 1; if (!is_valid_gup_args(pages, NULL, &gup_flags, FOLL_PIN)) return 0; return __gup_longterm_locked(current->mm, start, nr_pages, pages, &locked, gup_flags); } EXPORT_SYMBOL(pin_user_pages); /* * pin_user_pages_unlocked() is the FOLL_PIN variant of * get_user_pages_unlocked(). Behavior is the same, except that this one sets * FOLL_PIN and rejects FOLL_GET. * * Note that if a zero_page is amongst the returned pages, it will not have * pins in it and unpin_user_page*() will not remove pins from it. */ long pin_user_pages_unlocked(unsigned long start, unsigned long nr_pages, struct page **pages, unsigned int gup_flags) { int locked = 0; if (!is_valid_gup_args(pages, NULL, &gup_flags, FOLL_PIN | FOLL_TOUCH | FOLL_UNLOCKABLE)) return 0; return __gup_longterm_locked(current->mm, start, nr_pages, pages, &locked, gup_flags); }
fast gup functions
-
/** * unpin_user_pages() - release an array of gup-pinned pages. * @pages: array of pages to be marked dirty and released. * @npages: number of pages in the @pages array. * * For each page in the @pages array, release the page using unpin_user_page(). * * Please see the unpin_user_page() documentation for details. */ void unpin_user_pages(struct page **pages, unsigned long npages) { unsigned long i; struct folio *folio; unsigned int nr; /* * If this WARN_ON() fires, then the system *might* be leaking pages (by * leaving them pinned), but probably not. More likely, gup/pup returned * a hard -ERRNO error to the caller, who erroneously passed it here. */ if (WARN_ON(IS_ERR_VALUE(npages))) return; sanity_check_pinned_pages(pages, npages); for (i = 0; i < npages; i += nr) { folio = gup_folio_next(pages, npages, i, &nr); gup_put_folio(folio, nr, FOLL_PIN); } }
gup unpin function, not actual logic
-
void unpin_user_page_range_dirty_lock(struct page *page, unsigned long npages, bool make_dirty) { unsigned long i; struct folio *folio; unsigned int nr; for (i = 0; i < npages; i += nr) { folio = gup_folio_range_next(page, npages, i, &nr); if (make_dirty && !folio_test_dirty(folio)) { folio_lock(folio); folio_mark_dirty(folio); folio_unlock(folio); } gup_put_folio(folio, nr, FOLL_PIN); } }
unpin logic but for dirty pages
-
static void __maybe_unused undo_dev_pagemap(int *nr, int nr_start, unsigned int flags, struct page **pages) { while ((*nr) - nr_start) { struct page *page = pages[--(*nr)]; ClearPageReferenced(page); if (flags & FOLL_PIN) unpin_user_page(page); else put_page(page); } }
policy use function that undoes mapping
-
#ifdef CONFIG_STACK_GROWSUP return vma_lookup(mm, addr); #else static volatile unsigned long next_warn; struct vm_area_struct *vma; unsigned long now, next; vma = find_vma(mm, addr); if (!vma || (addr >= vma->vm_start)) return vma; /* Only warn for half-way relevant accesses */ if (!(vma->vm_flags & VM_GROWSDOWN)) return NULL; if (vma->vm_start - addr > 65536) return NULL; /* Let's not warn more than once an hour.. */ now = jiffies; next = next_warn; if (next && time_before(now, next)) return NULL; next_warn = now + 60*60*HZ; /* Let people know things may have changed. */ pr_warn("GUP no longer grows the stack in %s (%d): %lx-%lx (%lx)\n", current->comm, task_pid_nr(current), vma->vm_start, vma->vm_end, addr); dump_stack(); return NULL;
helper func to lookup vma(virtual mem area) that warns per hour about half way relevant acc and changes in stack
-
void unpin_user_pages_dirty_lock(struct page **pages, unsigned long npages, bool make_dirty) { unsigned long i; struct folio *folio; unsigned int nr; if (!make_dirty) { unpin_user_pages(pages, npages); return; } sanity_check_pinned_pages(pages, npages); for (i = 0; i < npages; i += nr) { folio = gup_folio_next(pages, npages, i, &nr); /* * Checking PageDirty at this point may race with * clear_page_dirty_for_io(), but that's OK. Two key * cases: * * 1) This code sees the page as already dirty, so it * skips the call to set_page_dirty(). That could happen * because clear_page_dirty_for_io() called * page_mkclean(), followed by set_page_dirty(). * However, now the page is going to get written back, * which meets the original intention of setting it * dirty, so all is well: clear_page_dirty_for_io() goes * on to call TestClearPageDirty(), and write the page * back. * * 2) This code sees the page as clean, so it calls * set_page_dirty(). The page stays dirty, despite being * written back, so it gets written back again in the * next writeback cycle. This is harmless. */ if (!folio_test_dirty(folio)) { folio_lock(folio); folio_mark_dirty(folio); folio_unlock(folio); } gup_put_folio(folio, nr, FOLL_PIN); } }
unpins and dirties page
-
static inline struct folio *gup_folio_next(struct page **list, unsigned long npages, unsigned long i, unsigned int *ntails) { struct folio *folio = page_folio(list[i]); unsigned int nr; for (nr = i + 1; nr < npages; nr++) { if (page_folio(list[nr]) != folio) break; } *ntails = nr - i; return folio; }
gets folio of next page along with reference to end of folio
-
static inline struct folio *gup_folio_range_next(struct page *start, unsigned long npages, unsigned long i, unsigned int *ntails) { struct page *next = nth_page(start, i); struct folio *folio = page_folio(next); unsigned int nr = 1; if (folio_test_large(folio)) nr = min_t(unsigned int, npages - i, folio_nr_pages(folio) - folio_page_idx(folio, next)); *ntails = nr; return folio; }
gets the folio of the next page from start to 'i' range. also gets the tail folio/reference
-
void unpin_user_page(struct page *page) { sanity_check_pinned_pages(&page, 1); gup_put_folio(page_folio(page), 1, FOLL_PIN); } EXPORT_SYMBOL(unpin_user_page);
actual policy use logic
-
if (!put_devmap_managed_page_refs(&folio->page, refs)) folio_put_refs(folio, refs);
Definitely a vital and straightforward policy use section of gup that simples places a reference on the folio
-
if (flags & FOLL_PIN) { if (is_zero_folio(folio)) return; node_stat_mod_folio(folio, NR_FOLL_PIN_RELEASED, refs); if (folio_test_large(folio)) atomic_sub(refs, &folio->_pincount); else refs *= GUP_PIN_COUNTING_BIAS; }
Checks if the folio is zero/large
-
if (folio_test_large(folio)) atomic_add(refs, &folio->_pincount); else folio_ref_add(folio, refs * (GUP_PIN_COUNTING_BIAS - 1))
maintaining reference counts. Part of policy logic most likely
-
-
www.nytimes.com www.nytimes.com
-
Die New York Times über die Pläne des Trump-Teams zur Beendigung der Klimapolitik der Biden-Administration. Dazu gehören der Austritt aus dem Pariser Abkommen, die Verlagerung (zwecks Entmachtung) der Environmental Protection Agency und die Aufhebung des Verbots von Bohrungen in bisherIgen Naturschutzgebieten und Territorien von Native Americans. https://www.nytimes.com/2024/11/08/climate/trump-transition-epa-interior-energy.html
-
-
Local file Local file
-
Desmond, Matthew. Poverty, by America. 1st ed. New York: Crown, 2023. https://amzn.to/40Aqzlp
Annotation URL: urn:x-pdf:eefd847a2a1723651d1d863de5153292
Alternate annotation link: https://jonudell.info/h/facet/?user=chrisaldrich&max=100&exactTagSearch=true&expanded=true&url=urn%3Ax-pdf%3Aeefd847a2a1723651d1d863de5153292
Tags
- food stamps
- War on Poverty
- unions
- wage stagnation
- policy
- minimum wage
- capitalism
- opportunity hoarding
- housing market
- mortgages
- universal basic income (UBI)
- Ronald Reagan
- Dan Allosso Book Club
- means-tested transfer programs
- wages
- Children’s Health Insurance Program (CHIP)
- child poverty
- poverty abolitionism
- Mollie Orshansky
- Democrats
- taxes
- Low Income Housing Tax Credit (LIHTC)
- neighborhoods
- taxing the poor
- welfare system
- References
- zoning laws
- empowerment
- Dan Allosso Book Club 2024-11-09
- deconcentrating poverty
- work
- Poverty, by America
- Black Americans
- landlords
- payday loan industry
- opportunity
- banking sector
- buy-now-pay-later (BNPL) companies
- opportunity commodification
- workforce
- Earned Income Tax Credit (EITC)
- National Labor Relations Act
- sociology
- Matthew Desmond
- unemployment insurance
- poverty prevention
- class
- eviction
- welfare
- toxic capitalism
- labor market
- poverty
Annotators
-
- Oct 2024
-
jabberwocking.com jabberwocking.com
-
www.theguardian.com www.theguardian.com
-
2023 haben Böden und Landpflanzen fast kein CO2 absorbiert. Dieser Kollaps der Landsenken vor allem durch Dürren und Waldbrände wurde in diesem Ausmaß kaum vorausgesehen, und es ist nicht klar, ob auf ihn eine Regeneration folgt. Er stellt Klimamodelle ebenso in Frage wie die meisten nationalen Pläne zum Erreichen von CO2-Neutralität, weil sie auf natürlichen Senken an Land beruhen. Es gibt Anzeichen dafür, dass die steigenden Temperaturen inzwischen auch die CO2-Aufnahmefähigkeit der Meere schwächen. Überblicksartikel mit Links zu Studien https://www.theguardian.com/environment/2024/oct/14/nature-carbon-sink-collapse-global-heating-models-emissions-targets-evidence-aoe
Tags
- Low latency carbon budget analysis reveals a large decline of the land carbon sink in 2023
- Andrew Watson
- 2023
- A warming climate will make Australian soil a net emitter of atmospheric CO2
- Schwächung der marinen Kohlenstoffsenken
- by: Patrick Greenfield
- French Laboratory of Climate and Environmental Sciences
- Johan Rockström
- Impact of high temperature heat waves on ocean carbon sinks: Based on literature analysis perspective
- Pierre Friedlingstein
- Tim Lenton
- date::2024-10-14
- Schwächung der terrestrischen Kohlenstoffsenken
- Global Carbon Budget
- The role of forests in the EU climate policy: are we on the right track?
- Philippe Ciais
- The enduring world forest carbon sink
Annotators
URL
-
-
elixir.bootlin.com elixir.bootlin.com
-
if (dtc->wb_thresh < 2 * wb_stat_error()) { wb_reclaimable = wb_stat_sum(wb, WB_RECLAIMABLE); dtc->wb_dirty = wb_reclaimable + wb_stat_sum(wb, WB_WRITEBACK); } else { wb_reclaimable = wb_stat(wb, WB_RECLAIMABLE); dtc->wb_dirty = wb_reclaimable + wb_stat(wb, WB_WRITEBACK); }
This is a configuration policy that does a more accurate calculation on the number of reclaimable pages and dirty pages when the threshold for the dirty pages in the writeback context is lower than 2 times the maximal error of a stat counter.
-
static long wb_min_pause(struct bdi_writeback *wb, long max_pause, unsigned long task_ratelimit, unsigned long dirty_ratelimit, int *nr_dirtied_pause
This function is an algorithmic policy that determines the minimum throttle time for a process between consecutive writeback operations for dirty pages based on heuristics. It is used for balancing the load of the I/O subsystems so that there will not be excessive I/O operations that impact the performance of the system.
-
if (!laptop_mode && nr_reclaimable > gdtc->bg_thresh && !writeback_in_progress(wb)) wb_start_background_writeback(wb);
This is a configuration policy that determines whether to start background writeout. The code here indicates that if laptop_mode, which will reduce disk activity for power saving, is not set, then when the number of dirty pages reaches the bg_thresh threshold, the system starts writing back pages.
-
if (thresh > dirty) return 1UL << (ilog2(thresh - dirty) >> 1);
This implements a configuration policy that determines the interval for the kernel to wake up and check for dirty pages that need to be written back to disk.
-
limit -= (limit - thresh) >> 5;
This is a configuration policy that determines how much should the limit be updated. The limit controls the amount of dirty memory allowed in the system.
-
if (dirty <= dirty_freerun_ceiling(thresh, bg_thresh) && (!mdtc || m_dirty <= dirty_freerun_ceiling(m_thresh, m_bg_thresh))) { unsigned long intv; unsigned long m_intv; free_running: intv = dirty_poll_interval(dirty, thresh); m_intv = ULONG_MAX; current->dirty_paused_when = now; current->nr_dirtied = 0; if (mdtc) m_intv = dirty_poll_interval(m_dirty, m_thresh); current->nr_dirtied_pause = min(intv, m_intv); break; } /* Start writeback even when in laptop mode */ if (unlikely(!writeback_in_progress(wb))) wb_start_background_writeback(wb); mem_cgroup_flush_foreign(wb); /* * Calculate global domain's pos_ratio and select the * global dtc by default. */ if (!strictlimit) { wb_dirty_limits(gdtc); if ((current->flags & PF_LOCAL_THROTTLE) && gdtc->wb_dirty < dirty_freerun_ceiling(gdtc->wb_thresh, gdtc->wb_bg_thresh)) /* * LOCAL_THROTTLE tasks must not be throttled * when below the per-wb freerun ceiling. */ goto free_running; } dirty_exceeded = (gdtc->wb_dirty > gdtc->wb_thresh) && ((gdtc->dirty > gdtc->thresh) || strictlimit); wb_position_ratio(gdtc); sdtc = gdtc; if (mdtc) { /* * If memcg domain is in effect, calculate its * pos_ratio. @wb should satisfy constraints from * both global and memcg domains. Choose the one * w/ lower pos_ratio. */ if (!strictlimit) { wb_dirty_limits(mdtc); if ((current->flags & PF_LOCAL_THROTTLE) && mdtc->wb_dirty < dirty_freerun_ceiling(mdtc->wb_thresh, mdtc->wb_bg_thresh)) /* * LOCAL_THROTTLE tasks must not be * throttled when below the per-wb * freerun ceiling. */ goto free_running; } dirty_exceeded |= (mdtc->wb_dirty > mdtc->wb_thresh) && ((mdtc->dirty > mdtc->thresh) || strictlimit); wb_position_ratio(mdtc); if (mdtc->pos_ratio < gdtc->pos_ratio) sdtc = mdtc; }
This is an algorithmic policy that determines whether the process can run freely or a throttle is needed to control the rate of the writeback by checking if the number of dirty pages exceed the average of the global threshold and background threshold.
-
shift = dirty_ratelimit / (2 * step + 1); if (shift < BITS_PER_LONG) step = DIV_ROUND_UP(step >> shift, 8); else step = 0; if (dirty_ratelimit < balanced_dirty_ratelimit) dirty_ratelimit += step; else dirty_ratelimit -= step;
This is a configuration policy that determines how much we should increase/decrease the dirty_ratelimit, which controls the rate that processors write dirty pages back to storage.
-
ratelimit_pages = dirty_thresh / (num_online_cpus() * 32); if (ratelimit_pages < 16) ratelimit_pages = 16;
This is a configuration policy that dynamically determines the rate that kernel can write dirty pages back to storage in a single writeback cycle.
-
t = wb_dirty / (1 + bw / roundup_pow_of_two(1 + HZ / 8));
This implements a configuration policy that determines the maximum time that the kernel should wait between writeback operations for dirty pages. This ensures that dirty pages are flushed to disk within a reasonable time frame and control the risk of data loss in case of a system crash.
-
if (IS_ENABLED(CONFIG_CGROUP_WRITEBACK) && mdtc) {
This is a configuration policy that controls whether to update the limit in the control group. The config enables support for controlling the writeback of dirty pages on a per-cgroup basis in the Linux kernel. This allows for better resource management and improved performance.
-
-
elixir.bootlin.com elixir.bootlin.com
-
if (si->cluster_info) { if (!scan_swap_map_try_ssd_cluster(si, &offset, &scan_base)) goto scan; } else if (unlikely(!si->cluster_nr--)) {
Algorithmic policy decision: If SSD, use SSD wear-leveling friendly algorithm. Otherwise, use HDD algo which minimizes seek times. Potentially, certain access patterns may make one of these algorithms less effective (i.e. in the case of wear leveling, the swap is constantly full)
-
scan_base = offset = si->lowest_bit; last_in_cluster = offset + SWAPFILE_CLUSTER - 1; /* Locate the first empty (unaligned) cluster */ for (; last_in_cluster <= si->highest_bit; offset++) { if (si->swap_map[offset]) last_in_cluster = offset + SWAPFILE_CLUSTER; else if (offset == last_in_cluster) { spin_lock(&si->lock); offset -= SWAPFILE_CLUSTER - 1; si->cluster_next = offset; si->cluster_nr = SWAPFILE_CLUSTER - 1; goto checks; } if (unlikely(--latency_ration < 0)) { cond_resched(); latency_ration = LATENCY_LIMIT; } }
Here, (when using HDDs), a policy is implemented that places the swapped page in the first available slot. This is supposed to reduce seek time in spinning drives, as it encourages having swap entries near each other.
-
/* * Even if there's no free clusters available (fragmented), * try to scan a little more quickly with lock held unless we * have scanned too many slots already. */ if (!scanned_many) { unsigned long scan_limit; if (offset < scan_base) scan_limit = scan_base; else scan_limit = si->highest_bit; for (; offset <= scan_limit && --latency_ration > 0; offset++) { if (!si->swap_map[offset]) goto checks; } }
Here we have a configuration policy where we do another smaller scan as long as we haven't exhausted our latency_ration. Another alternative could be yielding early in anticipation that we aren't going to find a free slot.
-
/* * select a random position to start with to help wear leveling * SSD */ for_each_possible_cpu(cpu) { per_cpu(*p->cluster_next_cpu, cpu) = get_random_u32_inclusive(1, p->highest_bit); }
An algorithmic (random) policy is used here to spread swap pages around an SSD to help with wear leveling instead of writing to the same area of an SSD often.
-
cluster_list_add_tail(&si->discard_clusters, si->cluster_info, idx);
A policy decision is made to add a cluster to the discard list on a first-come, first-served basis. However, this approach could be enhanced by prioritizing certain clusters higher on the list based on their 'importance.' This 'importance' could be defined by how closely a cluster is related to other pages in the swap. By doing so, the system can reduce seek time as mentioned on line 817.
-
if (unlikely(--latency_ration < 0)) { cond_resched(); latency_ration = LATENCY_LIMIT; scanned_many = true; } if (swap_offset_available_and_locked(si, offset)) goto checks; } offset = si->lowest_bit; while (offset < scan_base) { if (unlikely(--latency_ration < 0)) { cond_resched(); latency_ration = LATENCY_LIMIT; scanned_many = true; }
Here, a policy decision is made to fully replenish the latency_ration with the LATENCY_LIMIT and then yield back to the scheduler if we've exhausted it. This makes it so that when scheduled again, we have the full LATENCY_LIMIT to do a scan. Alternative policies could grow/shrink this to find a better heuristic instead of fully replenishing each time.
Marked config/value as awe're replacing latency_ration with a compiletime-defined limit.
-
while (scan_swap_map_ssd_cluster_conflict(si, offset)) { /* take a break if we already got some slots */ if (n_ret) goto done; if (!scan_swap_map_try_ssd_cluster(si, &offset, &scan_base)) goto scan;
Here, a policy decision is made to stop scanning if some slots were already found. Other policy decisions could be made to keep scanning or take into account how long the scan took or how many pages were found.
-
else if (!cluster_list_empty(&si->discard_clusters)) { /* * we don't have free cluster but have some clusters in * discarding, do discard now and reclaim them, then * reread cluster_next_cpu since we dropped si->lock */ swap_do_scheduled_discard(si); *scan_base = this_cpu_read(*si->cluster_next_cpu); *offset = *scan_base; goto new_cluster;
This algorithmic policy discards + reclaims pages as-needed whenever there is no free cluster. Other policies could be explored that do this preemptively in order to avoid the cost of doing it here.
-
#ifdef CONFIG_THP_SWAP
This is a build-time flag that configures how hugepages are handled when swapped. When defined, it swaps them in one piece, while without it splits them into smaller units and swaps those units.
-
if (swap_flags & SWAP_FLAG_DISCARD_ONCE) p->flags &= ~SWP_PAGE_DISCARD; else if (swap_flags & SWAP_FLAG_DISCARD_PAGES) p->flags &= ~SWP_AREA_DISCARD
This is a configuration policy decision where a sysadmin can pass flags to sys_swapon() to control the behavior discards are handled. If DISCARD_ONCE is set, a flag which "discard[s] swap area at swapon-time" is unset, and if DISCARD_PAGES is set, a flag which "discard[s] page-clusters after use" is unset.
-
-
elixir.bootlin.com elixir.bootlin.com
-
randomize_stack_top
This function uses a configuration policy to enable Address Space Layout Randomization (ASLR) for a specific process if PF_RANDOMIZE flag is set. It randomly arranges the positions of stack of a process to help defend certain attacks by making memory addresses unpredictable.
-
-
elixir.bootlin.com elixir.bootlin.com
-
if (prev_class) { if (can_merge(prev_class, pages_per_zspage, objs_per_zspage)) { pool->size_class[i] = prev_class; continue; } }
This is an algorithmic policy. A
zs_pool
maintainszs_page
s of differentsize_class
. However, somesize_class
es share exactly same characteristics, namelypages_per_zspage
andobjs_per_zspage
. Recall the other annotation of mine, it searched freezspage
s bysize_class
:zspage = find_get_zspage(class);
. Thus, grouping different classes improves memory utilization. -
zspage = find_get_zspage(class); if (likely(zspage)) { obj = obj_malloc(pool, zspage, handle); /* Now move the zspage to another fullness group, if required */ fix_fullness_group(class, zspage); record_obj(handle, obj); class_stat_inc(class, ZS_OBJS_INUSE, 1); goto out; }
This is an algorithmic policy. Instead of immediately allocating new zspages for each memory request, the algorithm first attempts to find and reuse existing partially filled zspages from a given size class by invoking the find_get_zspage(class) function. It also updates the corresponding fullness groups.
-
-
elixir.bootlin.com elixir.bootlin.com
-
1
This is a configuration policy that sets the timeout between retries if vmap_pages_range() fails. This could be tunable variable.
-
if (!(flags & VM_ALLOC)) area->addr = kasan_unpoison_vmalloc(area->addr, requested_size, KASAN_VMALLOC_PROT_NORMAL);
This is an algorithmic policy. This is an optimization that prevents duplicate marks of accessibility. Only pages allocated without
VM_ALLOC
(e.g. ioremap) was not set accessible (unpoison), thus requiring explicit setting here. -
100U
This is an configuration policy that determines 100 pages are the upper limit for the bulk-allocator. However, the implementation of
alloc_pages_bulk_array_mempolicy
does not explicitly limit in the implementation. So I believe it is an algorithmic policy related to some sort of optimization. -
if (!order) {
This is an algorithmic policy determines that only use the bulk allocator for order-0 pages (non-super pages). Maybe the bulk allocator could be applied to super pages to speed up allocation. Currently I haven't seen the reason why it cannot be applied.
-
if (likely(count <= VMAP_MAX_ALLOC)) { mem = vb_alloc(size, GFP_KERNEL); if (IS_ERR(mem)) return NULL; addr = (unsigned long)mem; } else { struct vmap_area *va; va = alloc_vmap_area(size, PAGE_SIZE, VMALLOC_START, VMALLOC_END, node, GFP_KERNEL, VMAP_RAM); if (IS_ERR(va)) return NULL; addr = va->va_start; mem = (void *)addr; }
This is an algorithmic policy that determines whether to use a more efficient
vl_alloc
which does not involve complex virtual-to-physical mappings. Unlike the latteralloc_vmap_area
,vb_alloc
does not need to traverse the rb-tree of free vmap areas. It simply find a larger enough block fromvmap_block_queue
. -
VMAP_PURGE_THRESHOLD
The threshold VMAP_PURGE_THRESHOLD is a configuration policy that could be tuned by machine learning. Setting this threshold lower reduces purging activities while setting it higher reduces framentation.
-
if (!(force_purge
This is an algorithmic policy that prevents purging blocks with considerable amount of "usable memory" unless requested with force_purge.
-
resched_threshold = lazy_max_pages() << 1;
The assignment of resched_threshold and lines 1776-1777 are configuration policies to determine fewer than which number of lazily-freed pages it should yield CPU temporarily to higher-priority tasks.
-
log = fls(num_online_cpus());
This heuristic scales lazy_max_pages logarithmically, which is a configuration policy. Alternatively, machine learning could determine the optimal scaling function—whether linear, logarithmic, square-root, or another approach.
-
32UL * 1024 * 1024
This is a configuration policy that decides to always returns multiples of 32 MB worth of pages. This could be a configurable variable rather than a fixed magic number.
-
- Sep 2024
-
elixir.bootlin.com elixir.bootlin.com
-
if (lruvec->file_cost + lruvec->anon_cost > lrusize / 4) { lruvec->file_cost /= 2; lruvec->anon_cost /= 2; }
It is a configuration policy. The policy here is to adjust the cost of current page. The cost means the overhead for kernel to operate the page if the page is swapped out. Kernel adopts a decay policy. Specifically, if current cost is greater than lrusize/4, its cost will be divided by 2. If kernel has no this policy, after a long-term running, the cost of each page is very high. Kernel might mistakenly reserve pages which are frequently visited long time ago but are inactive currently. It might cause performance degradation. The value (lrusize/4) here has a trade-off between performance and sensitivity. For example, if the value is too small, kernel will frequently adjust the priority of each page, resulting in process's performance degradation. If the value is too large, kernel might be misleaded by historical data, causing wrongly swapping currently popular pages and further performance degradation.
-
if (megs < 16) page_cluster = 2; else page_cluster = 3;
It is a configuration policy. The policy here is to determine the size of page cluster. "2" and "3" is determined externally to the kernel. Page cluster is the actual execution unit when swapping. If the machine is small-memory, kernel executes swap operation on 4 (2^2) pages for each time. Otherwise, kernel operats 8 (2^3) for each time. The rational here is to avoid much memory pressure for small-memory system and to improve performance for large-memory system.
-
-
elixir.bootlin.com elixir.bootlin.com
-
mod_memcg_page_state(area->pages[i], MEMCG_VMALLOC, 1);
It is a configuration policy. It is used to count the physical page for memory control group. The policy here is one physical page corresponds to one count to the memory control group. If using huge page, the value here might not be 1,
-
schedule_timeout_uninterruptible(1);
It is a configuration policy. If kernel cannot allocate an enough virtual space with alignment, while nofail is specified to disallow failure, the kernel will let the process to sleep for 1 time slot. In this period, the process cannot be interrupted and quit the schedule queue of CPU. The "1" here is a configuration parameter, made externally to the kernel. It is not large enough for latency-sensitive process and is not small enough to retry frequently.
-
if (array_size > PAGE_SIZE) { area->pages = __vmalloc_node(array_size, 1, nested_gfp, node, area->caller); } else { area->pages = kmalloc_node(array_size, nested_gfp, node); }
It is an algorithmic policy and also a configuration policy. The algorithmic policy here is to maxmize the data locality of virtual memory address, by letting the space be in continuous virtual pages. If the demanded size of virtual memory is larger than one page, the kernel will allocate multiple continuous pages for it by using __vmalloc_node(). Otherwise, the kernel will call kmalloc_node() to place it in a single page. On the other hand, to allocate continuous pages, we should invoke __vmalloc_node() by declaring align = 1, which is a configuration policy.
-
if (!counters) return; if (v->flags & VM_UNINITIALIZED) return;
It is an algorithmic policy. The show_numa_info() is used for printing how the virtual memory of v (vm_struct) distributes its pages across numa nodes. The two if conditions are used for filtering the invalid v. The first if means the virtual memory has not been associated with physical page. The second if means the virtual memory has not been initialized yet.
-
if (page) copied = copy_page_to_iter_nofault(page, offset, length, iter); else copied = zero_iter(iter, length);
It is an algorithmic policy. The policy here is to avoid lock/unlock overhead by using copy_page_to_iter_nofault() function plus if-else branch. Because copy_page_to_iter_nofault() is based on no page fault, we need to check the physical page is still alive. So the kernel uses an if condition to guarantee copy_page_to_iter_nofault() without page fault. On the other hand, if the page is not valid, kernel chooses to fill the iter using zero value instead of returning an error. I think it is because it can make invocation more convenient. The caller does not need to do a verification of the return value and does not need further actions to handle it.
-
if (base + last_end < vmalloc_start + last_end) goto overflow; /* * Fitting base has not been found. */ if (va == NULL) goto overflow;
It is an algorithmic policy. The two if conditions are used for checking the feasibility of the allocation. The first if means the adress of the allocation is beyond the allowable address, causing overflow. In this case, since the base address is decided from higher one to smaller one, reducing base address cannot work. Note that the base address is dependent on the va. The second if means we don't find a valid va which has appropriate base address. So the policy here is going to overflow branch to re-allocate va list.
-
if (base + start < va->va_start) { va = node_to_va(rb_prev(&va->rb_node)); base = pvm_determine_end_from_reverse(&va, align) - end; term_area = area; continue; }
It is an algorithmic policy. It is used for checking whether the start address of current va is valid. The policy here is to change a new va, different from the solution of "end address check" (explained in my other annotation). The reason is that we find the base address from high address to low address. If we continue to reduce the base address, the if condition will be always wrong. Changing a new va with a lower start address is the only solution.
-
if (base + end > va->va_end) { base = pvm_determine_end_from_reverse(&va, align) - end; term_area = area; continue; }
It is an algorithmic policy. The outer loop is an endless loop until finding a vaild virtual memory space satisfying the requirements. The if condition here is used to guarantee the space in va is large enough. If not, we continue to scan the memory space from high address to low address while satisfying the alignment requirement. Specifically, tuning the base address to a lower address. And then, it will retry for verification.
-
va = kmem_cache_zalloc(vmap_area_cachep, GFP_NOWAIT); if (WARN_ON_ONCE(!va)) continue;
It is an algorithmic policy. The for loop is used for transferring the virtual memory managment by using from vm_struct (link list) to vm_area (tree?). Inside the for loop, if we cannot allocate a new vmap_area from vmap_area_cachep (va = NULL), the program will simply print a warning and skip current tmp, instread of retry or anything to guarantee the integrity.
-
if (!spin_trylock(&vmap_area_lock)) return false;
It is an algorithmic policy. The vmalloc_dump_obj() function is used for printing the information of specified virtual memory. Due to concurrency, before manipulating the critical state, we must obtain the lock. The policy here is spin_trylock. It only tries once. If fails, the function will simply returns false. I think the policy here is to avoid long-term waiting to improve the performance.
-
-
dl.acm.org dl.acm.org
-
Bacchi
feminist political theory researcher Carol Bacchi is well known for her analytic strategy for policy theory.
-
-
stackoverflow.com stackoverflow.com
-
Disable all observers in your test suite by default. They should not be complicating your model tests because they should have separate concerns anyway. You don't need to unit test that observers actually fire, because ActiveRecord's test suite does that, and your integration tests will cover it.
-
-
elixir.bootlin.com elixir.bootlin.com
-
static inline unsigned int calc_slab_order(unsigned int size, unsigned int min_order, unsigned int max_order, unsigned int fract_leftover) { unsigned int order; for (order = min_order; order <= max_order; order++) { unsigned int slab_size = (unsigned int)PAGE_SIZE << order; unsigned int rem; rem = slab_size % size; if (rem <= slab_size / fract_leftover) break; } return order; }
Code to choose how many pages to allocate for a new slab to minimize wasted space from the remainder
-
-
www.liberation.fr www.liberation.fr
-
Der neue französische Premierminister Michel Barnier hat in seiner Zeit als Umweltminister wesentlich dazu beigetragen, das Vorsorgeprinzip und die finanzielle Verantwortung der Verschmutzenden für Schäden im Umweltrecht zu verankern. Obwohl er zu Amtsbeginn auch von der „ökologischen Schuld" gesprochen hat, erwarten NGOs und Thinktanks, deren Vertreter:innen die Libération befragt hat, allenfalls vorsichtige umweltpolitische Schritte und eine insgesamt restriktive Ausgabenpolitik von ihm.https://www.liberation.fr/environnement/le-premier-ministre-michel-barnier-est-il-vraiment-decide-a-payer-la-dette-ecologique-de-la-france-20240906_7BYVDVAUSJD2VN6M4V7DAI2N2E/
Tags
- Frankreich
- Regierung Barnier
- Greenpeace
- Ligue pour la protection des oiseaux (LPO)
- Neil Makaroff
- Stratégie nationale bas carbone
- secrétariat général à la Planification écologique (SGPE)
- Strategic Perspectives
- Anne Bringault
- Réseau Action Climat
- IDDRI policy research institute
- Générations futures
- Benoît Leguet
- Programmation pluriannuelle de l’énergie
- Allain Bougrain-Dubourg
- Sébastien Treyer
Annotators
URL
-
-
ainowinstitute.org ainowinstitute.org
-
in the 1990s and 2000s, the US government reduced its level of investment as interventionist policy fell out of vogue. This set the stage for Intel’s decline relative to firms like Taiwan Semiconductor Manufacturing Company, now the world’s dominant chip fabricator; and ASML, a Dutch company that is the sole manufacturer of the equipment needed to build state-of-the-art chips.
I hadn’t realised this significance of the loss of subsidy in offshoring
-
-
elixir.bootlin.com elixir.bootlin.com
-
if (folio) { pgoff_t start; rcu_read_lock(); start = page_cache_next_miss(ractl->mapping, index + 1, max_pages); rcu_read_unlock(); if (!start || start - index > max_pages) return; ra->start = start; ra->size = start - index; /* old async_size */ ra->size += req_size; ra->size = get_next_ra_size(ra, max_pages); ra->async_size = ra->size; goto readit;
Read ahead policy for marked folios
-
- Aug 2024
-
x.com x.com
-
https://x.com/Chronotope/status/1828785701732663335
Crypto miners are being paid not to mine to ease energy production/consumption cycles.
Related to protection money for the mob
re: https://x.com/curious_founder/status/1828511303788322888/photo/1 on The Economist's article about crypto mining in Texas o/a 2024-08-27
-
-
elixir.bootlin.com elixir.bootlin.com
-
if (hugetlb_cgroup_disabled())
This probably not an interesting policy decision for ldos. It is a feature flag for the running OS. But if cgroups were decided by policy then this flag would be controlled by the cgroup decision.
-
-
git.doit.wisc.edu git.doit.wisc.edu
-
static long get_nr_to_scan(struct lruvec *lruvec, struct scan_control *sc, bool can_swap)
figure out how many pages to scan.
-
static void prepare_scan_control(pg_data_t *pgdat, struct scan_control *sc) {
sets up the struct scan_control. Most of the value come from elsewhere but this function seems to bring it all together.
-
-
hypertext.niskanencenter.org hypertext.niskanencenter.org
-
www.aljazeera.com www.aljazeera.com
-
Washington Institute for Near East Policy
-
-
git.doit.wisc.edu git.doit.wisc.edu
-
ksm_thread_pages_to_scan
how many pages to scan. This is what many of the other config values are trying to get at.
-
function to compute a EWA for the number of pages to scan. Uses many of the config parameters from sysfs
-
- Jul 2024
-
www.cecan.ac.uk www.cecan.ac.uk
-
common goal to improve policy evaluations for the better.
for - CECAN - goal - policy improvement
-
-
git.doit.wisc.edu git.doit.wisc.edu
-
static void scan_time_advisor(void)
This function is calculating the pages to scan based on a other metrics such as cpu consumed. Seems like a good place for a learned algorithm.
-
-
www.youtube.com www.youtube.com
-
26:30 Brings up progress traps of this new technology
26:48
question How do we shift our (human being's) relationship with the rest of nature
27:00
metaphor - interspecies communications - AI can be compared to a new scientific instrument that extends our ability to see - We may discover that humanity is not the center of the universe
32:54
Question - Dr Doolittle question - Will we be able to talk to the animals? - Wittgenstein said no - Human Umwelt is different from others - but it may very well happen
34:54
species have culture - Marine mammals enact behavior similar to humans
- Unknown unknowns will likely move to known unknowns and to some known knowns
36:29
citizen science bioacoustic projects - audio moth - sound invisible to humans - ultrasonic sound - intrasonic sound - example - Amazonian river turtles have been found to have hundreds of unique vocalizations to call their baby turtles to safety out in the ocean
41:56
ocean habitat for whales - they can communicate across the entire ocean of the earth - They tell of a story of a whale in Bermuda can communicate with a whale in Ireland
43:00
progress trap - AI for interspecies communications - examples - examples - poachers or eco tourism can misuse
44:08
progress trap - AI for interspecies communications - policy
45:16
whale protection technology - Kim Davies - University of New Brunswick - aquatic drones - drones triangulate whales - ships must not get near 1,000 km of whales to avoid collision - Canadian government fines are up to 250,000 dollars for violating
50:35
environmental regulation - overhaul for the next century - instead of - treatment, we now have the data tools for - prevention
56:40 - ecological relationship - pollinators and plants have co-evolved
1:00:26
AI for interspecies communication - example - human cultural evolution controlling evolution of life on earth
Tags
- progress trap - AI for interspecies communications - examples - poachers - ecotourism
- ecological relationships - pollinators and plants co-evolved
- metaphor - interspecies communication - AI is like a new scientific instrument
- whale protection - bioacoustic and drones
- question - How do we shift our relationship with the rest of nature? - ESP research objective
- citizen science bioacoustics
- progress trap - AI for interspecies communications - policy
- environmental overhaul - treatment to prevention
- progress trap - AI applied to interspecies communications
- AI for interspecies communication - example - human cultural evolution controlling evolution of life on earth
- - whale communication - span the entire ocean
- interspecies communication - umwelt
Annotators
URL
-
- Jun 2024
-
www.lrb.co.uk www.lrb.co.uk
-
In 1880 Britain could with some justification be called the ‘workshop of the world’: it produced more than 20 per cent of global industrial output and about 40 per cent of the world’s manufactured exports. In the nearly half-century since Samuel published his essay of that name, historians have done much to undermine the narrative of an ‘industrial revolution’ bookended by the invention of the spinning jenny in 1764 and the New Poor Law of 1834.
There's an interesting linkage going on here between the industrial revolution (and thus possibly Capitalism) with the creation and even litigation of "the poor" classes in Britain.
Did "the poor" exist in the same way they do today prior to the Industrial Revolution? What are the subtle differences? (Compare with Thompson, E. P. “Time, Work-Discipline, and Industrial Capitalism.” Past & Present, no. 38 (1967): 56–97.)
-
-
git.doit.wisc.edu git.doit.wisc.edu
-
/* * The larger the object size is, the more slabs we want on the partial * list to avoid pounding the page allocator excessively. */ s->min_partial = min_t(unsigned long, MAX_PARTIAL, ilog2(s->size) / 2); s->min_partial = max_t(unsigned long, MIN_PARTIAL, s->min_partial);
A policy decision about how often we may have to go to the page allocator.
-
/* * calculate_sizes() determines the order and the distribution of data within * a slab object. */ 5111 5112 5113 5114 5115 5116 5117 5118 5119 5120 5121 5122 5123 5124 5125 5126 5127 5128 5129 5130 5131 5132 5133 5134 5135 5136 5137 5138 5139 5140 5141 5142 5143 5144 5145 5146 5147 5148 5149 5150 5151 5152 5153 5154 5155 5156 5157 5158 5159 5160 5161 5162 5163 5164 5165 5166 5167 5168 5169 5170 5171 5172 5173 5174 5175 5176 5177 5178 5179 5180 static int calculate_sizes(struct kmem_cache *s) {
computes a several values for the allocator based on the size and flags of the allocator being created.
-
#ifndef CONFIG_SLUB_TINY static inline int alloc_kmem_cache_cpus(struct kmem_cache *s)
Depending on the CONFIG_SLUB_TINY should ther be an active slab for each CPU?
-
static inline int calculate_order(unsigned int size) { unsigned int order; unsigned int min_objects; unsigned int max_objects; unsigned int min_order; min_objects = slub_min_objects; if (!min_objects) {
calculate the order (power of two number of pages) that each slab in this allocator should have.
-
max_objects = max(order_objects(slub_max_order, size), 1U); min_objects = min(min_objects, max_objects); min_order = max_t(unsigned int, slub_min_order, get_order(min_objects * size)); if (order_objects(min_order, size) > MAX_OBJS_PER_PAGE) return get_order(size * MAX_OBJS_PER_PAGE) - 1;
Policy calculation
-
s->flags & __OBJECT_POISON
apply policy
-
s->flags & SLAB_RED_ZONE)
debug plicy
-
if (s->flags & __CMPXCHG_DOUBLE) {
Config fastpath?
-
if (s->flags & __CMPXCHG_DOUBLE) {
Fast path config
-
set the number of slabs per cpu
-
-
git.doit.wisc.edu git.doit.wisc.edu
-
int calculate_normal_threshold(struct zone *zone) { int threshold; int mem; /* memory in 128 MB units */ /* * The threshold scales with the number of processors and the amount * of memory per zone. More memory means that we can defer updates for * longer, more processors could lead to more contention. * fls() is used to have a cheap way of logarithmic scaling. * * Some sample thresholds: * * Threshold Processors (fls) Zonesize fls(mem)+1 * ------------------------------------------------------------------ * 8 1 1 0.9-1 GB 4 * 16 2 2 0.9-1 GB 4 * 20 2 2 1-2 GB 5 * 24 2 2 2-4 GB 6 * 28 2 2 4-8 GB 7 * 32 2 2 8-16 GB 8 * 4 2 2 <128M 1 * 30 4 3 2-4 GB 5 * 48 4 3 8-16 GB 8 * 32 8 4 1-2 GB 4 * 32 8 4 0.9-1GB 4 * 10 16 5 <128M 1 * 40 16 5 900M 4 * 70 64 7 2-4 GB 5 * 84 64 7 4-8 GB 6 * 108 512 9 4-8 GB 6 * 125 1024 10 8-16 GB 8 * 125 1024 10 16-32 GB 9 */ mem = zone_managed_pages(zone) >> (27 - PAGE_SHIFT); threshold = 2 * fls(num_online_cpus()) * (1 + fls(mem)); /* * Maximum threshold is 125 */ threshold = min(125, threshold); return threshold; }
a "magic" formula for computing the amount of memory per zone.
-
-
www.utep.edu www.utep.edu
-
If a student either “never attended” or “stopped attending,” faculty should assign an “F” grade in Goldmine. For students that “stopped attending,” faculty should also provide the date of the last known active participation by the student in an instructional activity such as a response to discussion boards, study group, assignments, class lecture, lab, tests, etc. This does not include a student simply logging into the class as this is not considered “active participation.”
unearned F -
-
Faculty who suspect a student of plagiarism or some form of academic dishonesty must report the suspicion to the Dean of Students via The Office of Student Conduct and Conduct Resolution (OSCCR). OSCCR will investigate the allegation and determine the course of action. It is against Regents’ Rules and Regulations for faculty to make a determination independent of OSCCR. According to UTEP’s Handbook of Operating Procedures Section 4.14, “such action is a disciplinary penalty that violates the student’s right to due process and leaves the faculty member vulnerable to a student grievance petition, a civil lawsuit, and possible disciplinary action by the University.” More information is available in the HOOP.
Faculty deciding themselves on academic dishonesty 1. violates student's right to due process 1. leaves faculty vulnerable to a student grievance petition, civil lawsuit....
-
-
www.washburn.edu www.washburn.edu
-
Proper Citation
Citation styles - for web published citations
-
Technology, Education and Copyright Harmonization (TEACH) Act. Signed into law by President Bush on November 2, the TEACH Act loosens the restraints created by the DMCA insofar as education is concerned
TEACH Act - loosens DMCA in favor of fair use
-
More importantly, the idea of Fair Use was effectively removed from Web-based education because of the DMCA
Fair Use revoked b/c of DMCA
-
Digital Millennium Copyright Act (DMCA) was passed in Oct. 1998 "to implement United States treaty obligations and to move the nation's copyright law into the digital age.
Digital Millennium Copyright Act
-
-
uri.libguides.com uri.libguides.com
-
Resources for using sound recordings in online education
Music resources for education
-
-
uri.libguides.com uri.libguides.com
-
Resources for using video in online education
Video resources for educaton
-
Place the video in the context of the course, explaining why it was chosen and what it was intended to illustrate. Recontextualize the video when appropriate through the addition of background readings, study questions, commentary, criticism, annotation, and student reactions.
Context for use with video is key
-
-
uri.libguides.com uri.libguides.com
-
Resources for using images in online education
Image sources
-
If copying an image, use the lowest image resolution possible to achieve your purpose.
Interesting to consider resolution of images
-
-
uri.libguides.com uri.libguides.com
-
Note: Professor Meghani is making too much work for herself by scanning the text. Instead, she could direct her students to Project Gutenberg, which contains public domain titles available for download in multiple formats. In this case, the Marxists Internet Archive would also be a good sourc
Project Gutenberg - has public domain titles for download.
-
-
www.fairuseweek.org www.fairuseweek.org
-
It is not necessary to prevailon each of the four factors for asuccessful fair use claim.
You don't have to prove fair use in all 4 factors
-
Fair use is a flexible standard andall four statutory factors areconsidered together.
Fair use flexibility
-
The US Constitution clearlystates that the purpose of theintellectual property system is to“promote the progress of science andthe useful arts
Purpose of Intellectual property system
-
ir use is a right explicitly recognizedby the Copyright Act.1 The SupremeCourt has recognized this right as a“First Amendment safeguard” becausecopyright law might otherwiseconstrict freedom of speech
Fair Use is a right - I really don't understand this but Ok
-
-
guides.lib.utexas.edu guides.lib.utexas.edu
-
The Copyright Clearance Center can grant permission to digitize, display and transmit print works
getting permission to digitize, display and transmit print works
-
-
guides.lib.utexas.edu guides.lib.utexas.edu
-
Using the Four Factors
Four Factors Test for Fair Use
Read about each factor (character of the use, nature of the work, amount used, effect upon the market)
Answer each factor's question about your use See how the balance tips with each answer
Make a judgment about the final balance: overall, does the balance tip in favor of fair use or in favor of getting permission?
-
-
guides.lib.utexas.edu guides.lib.utexas.edu
-
TEACH Act Checklist
TEACH Act Checklist
-
-
guides.lib.utexas.edu guides.lib.utexas.edu
-
The TEACH Act checklist, summarizes the 22 (!) prerequisites. Nevertheless, we may be optimistic that, together with fair use, this statute will achieve Congress' goal of facilitating online education.
TEACH Act checklist
-
are a small subset of the uses of online resources educators may wish to make. It only covers in class performances and displays, not, for example, supplemental online reading, viewing, or listening materials. For those activities, as well as many others, we'll need to continue to rely on fair use. Remember, however, when relying on fair use, the fair use test is sensitive to harm to markets. This means that in general, where there is an established market for permissions, there will often be a narrower scope for fair use, and our reliance on fair use should be limited.
-
The TEACH Act authorizes us to digitize works for use in online education, but only to the extent we are authorized to use those works in Section 110(2), and so long as they are not available digitally in a format free from technological protection.
right to make digital copies
-
The statute's complexity provides a new context within which to think about fair use: compared to the many conditions and limits contained in Section 110(2), the four factor fair use test seems simple and elegant.
four factor fair use test
-
The audiovisual works and dramatic musical works may only be shown as clips -- "reasonable and limited portions".
reasonable and limited portions are allowed online
-
The TEACH Act of 2002, expanded the scope of online educators' rights to perform and display works and to make copies integral to such performances and displays, making the rights closer to those we have in face-to-face teaching. But there is still a considerable gap between what the statute authorizes for face-to-face teaching and for online education.
TEACH Act definition
-
Copyright law provides educators with a separate set of rights in addition to fair use, to display (show) and perform (show or play) others' works in the classroom. These rights are in Section 110(1) of the Copyright Act and apply to any work, regardless of the medium.
The TEACH Act
-
-
guides.lib.utexas.edu guides.lib.utexas.edu
-
Because your institution is likely to be liable, along with an accused individual, for the infringements of faculty, students and staff, most institutions advise such individuals not to use works for which required permission cannot be obtained.
copyright infrindgement
-
There truly may be no one who cares about what you do with a particular work, but the bottom line is that no amount of unsuccessful effort eliminates liability for copyright infringement. Copyright protects materials whether the owner cares about protection or not.
unavailable authors
-
If you are preparing a commercial product, you will need assurances of authority to grant permission because your publisher will expect those assurances from you.
Creating commercial products
-
question them about whether they retained copyright or whether they assigned it to their publisher.
The author may not have the copyright
-
If you know who the author and the publisher are, you can contact them directly. If you do not know who the publisher is, The Literary Marketplace (for books) or Ulrich's Web (for journals - requires login) may help you. Once you know whom to ask, writing a letter, calling or emailing are all appropriate ways to initiate contact.
Getting permission from authors - where to look
-
-
guides.lib.utexas.edu guides.lib.utexas.edu
-
Where fair use may be questioned, implied rights may be broader, but an express right to use is best - it's clear and reassuring. It's possible today to search Creative Commons licensed works by license type, or limit your search to be sure that your results include only materials intended for use by educators and students.
Best way to find usable things with Creative Commons
-
You can easily give your works an express license by attaching a Creative Commons license to the materials you post online. It's easy and it sends the message that you want your materials to be part of the flow of creativity. No one creates in a vacuum. Just as you build on others' works, others will build on yours.
Great explanation of what "Creative Commons" is
-
So, just by posting online, an author implies a limited license to use their work in this manner.
This seems to be opposite of what the paragraph above states.
-
Simply putting the fingers to the save key creates a copyrighted work. Once expression is committed to a tangible medium, copyright protection is automatic. So, postings of all kinds are protected the same as published printed works.
Interesting. This is very helpful.
-
-
spectrum.ieee.org spectrum.ieee.org
-
A gyrotron uses high-power, linear-beam vacuum tubes to generate millimeter-length electromagnetic waves. Invented by Soviet scientists in the 1960s, gyrotrons are used in nuclear fusion research experiments to heat and control plasma. Quaise has raised $95 million from investors, including Japan’s Mitsubishi, to develop technology that would enable it to quickly and efficiently drill up to 20 km deep, closer to the Earth’s core than ever before
Fusion power tech adapted to ease geothermal power. IMO a good example of remixing knowledge from one domain to another. And, for example, if you think fusion isn't worth pursuing, then we might not get this cross-cutting adaptation that's valuable for advancing renewable energy.
-
-
-
o the creator or originator of that record in order to verify authenticity without the student’s permis
You can verify authenticity of records wo permission
-
Example Scenarios
Great example cases
-
-
www.bates.edu www.bates.edu
-
provide a letter of recommendation for a student that includes grades unless you have received written consent from the student to release this information for this explicit purpose.
Can't put grades in a Letter of Recommendation without written consent
-
provide anyone outside the college with lists of students enrolled in classes;
Class rosters are protected
-
-
teaching.resources.osu.edu teaching.resources.osu.edu
-
If you teach several sections of the same course but the students do not interact with each other in a physical classroom or online, the courses cannot be merged in Carmen.
if they are not combined in Colleague - they can't be in Canvas - good to know. It's not just an integration issue - its FERPA
-
-
www.edsurge.com www.edsurge.com
-
The teacher who saw the incident in-person can speak about it because FERPA is not a confidentiality law. It only protects what’s in a student’s education record.
Interesting - only what is in records is protected.
-
If a school denies access to student records to a parent of a student under the age of 18, that’s a FERPA violation
this is good to know parents of kids under 18 must have access to records
-
One is that, generally, higher education institutions can choose to release a students’ education records to both parents, provided that at least one parent claims the student as a dependent for tax purposes.
INteresting - Baylor won't do this.
-
“It should be clear that [the data] belongs to the school, not to the vendor, and that the vendor’s responsibility is to process it for the benefit of the school and its students, and not for the vendor’s own benefit,” McDonald says.
FERPA and 3rd party Vendors
-
-
ualr.edu ualr.edu
-
Steps Toward Universal Design of Online Courses
UA - Little Rock
-
-
studentprivacy.ed.gov studentprivacy.ed.gov
-
“Law enforcement unit records” (i.e., records created by the law enforcement unit, created for a law enforcement purpose, and maintained by the law enforcement unit) are not “education records” subject to the privacy protections of FERPA. As such, the law enforcement unit may refuse to provide a parent or eligible student with an opportunity to inspect and review law enforcement unit records, and it may disclose law enforcement unit records to third parties without the parent or eligible student’s prior written consent
Law enforcement records is not FERPA protectd
-
-
www2.ed.gov www2.ed.gov
-
Schools may disclose, without consent, "directory" information such as a student's name, address, telephone number, date and place of birth, honors and awards, and dates of attendance. However, schools must tell parents and eligible students about directory information and allow parents and eligible students a reasonable amount of time to request that the school not disclose directory information about them.
Definition of Directory Information : name address phone date & place of birth honors and awards dates of attendance.
Students can "opt out" of directory information.
-
schools must have written permission from the parent or eligible student in order to release any information from a student's education record. However, FERPA allows schools to disclose those records, without consent, to the following parties or under the following conditions (34 CFR § 99.31): School officials with legitimate educational interest; Other schools to which a student is transferring; Specified officials for audit or evaluation purposes; Appropriate parties in connection with financial aid to a student; Organizations conducting certain studies for or on behalf of the school; Accrediting organizations; To comply with a judicial order or lawfully issued subpoena; Appropriate officials in cases of health and safety emergencies; and State and local authorities, within a juvenile justice system, pursuant to specific State law.
Who you can release information to without student consent.
-
The Family Educational Rights and Privacy Act (FERPA) (20 U.S.C. § 1232g; 34 CFR Part 99) is a Federal law that protects the privacy of student education records. The law applies to all schools that receive funds under an applicable program of the U.S. Department of Education.
FERPA definitions
-
These rights transfer to the student when he or she reaches the age of 18 or attends a school beyond the high school level.
Parent's rights end with 18 and / or college and transfers to students
-
-
www.turnitin.com www.turnitin.com
-
For students and educators alike, it's important to think about academic integrity as a learned concept.
Academic integrity is a learned concept
-
Whether in history, social studies, science, or literature, most East Asian students are discouraged from producing original work in an academic setting and instead advised to remember and repeat the ideas of the masters in those subject areas as a form of respect.
Interesting that individual work is not the goal....
-
nursing students, for example, are focused on the concept of caring for others and illustrate collectivist culture, in both academic study and clinical practice. It is often natural for nursing students to project caring for patients to helping at-risk cohorts in the form of academic collusion.
Interesting take on nursing students
-
Students that grow up with this perspective may not understand why citations at the end of a research paper are important; furthermore, citations might even make them feel uncomfortable, as they recognize individual authors above the community as a whole.
This is a different view of authorship - elevating 1 above the many
-
A collectivist culture is one that prioritizes the goals and desires of the whole over the needs of the individual. Often in East Asian countries like South Korea, Japan, and China, ideas that are beneficial to and shared by the community are not individually attributed, but rather recognized as universal knowledge.
Interesting take on east asian culture. it really makes sense if the collective owns the information - you don't have to cite authorship.
-
-
www.valleycollege.edu www.valleycollege.edu
-
But that practice fails to recognize that students are responsible for their own computer access and stable internet connection. Although the District-sponsored Learning Manage System will, from time to time, have problems, students need to accept responsibility for their own actions, actions that might be conveniently blamed on an impersonal component of technology.
This really holds students responsible for being proactive and not waiting until the last minute with work.
-
It is a violation of the academic honesty and intellectual integrity policies of SBVC to log in to someone else's account and pretend to be that person.
I like that it holds both students in bad standing. The one doing the work and the one not doing the work
-
-
oregoncoast.edu oregoncoast.edu
-
heating includes giving information, materials, or work to another person in or
I really explaining that giving information to another student makes the "giver" dishonest as well as the reciever
-
-
www.insidehighered.com www.insidehighered.com
-
it learned of the possibility that one student admitted to Georgetown may have engaged in inappropriate transfer of online credits.
pay for credit scandal - where identity was not confirmed.
-
-
kb.ecampus.uconn.edu kb.ecampus.uconn.edu
-
State Issued Driver’s License, State Identification Card, Military Identification Card, Passport/Visa, Permanent Residence Card
Valid Ids shown and compared to student school ids - you ight could fake this but it would take effort
-
Method: Instructors use check-ins and/or office hours to discuss content, previous assignments, and progress on existing assignments. Process: Instructors ask for identification and/or confirm student identity via official UConn photo in StudentAdmin.
This is an interesting way to verify student identity. Required check-ins. but it also makes the professor feel more "real"
-
-
-
Instructors should check student identity by verifying IDs in a one-on-one online meeting prior to the presentation.
I didn't realize that instructors had to verify student identity via ID.
-
Federal Regulation §602.17: Application of Standards in Reaching Accreditation Decisions requires that all public universities have processes in place through which the institution establishes that a student who registers in any course offered via distance education or correspondence is the same student who academically engages in the course or program; and makes clear in writing that institutions must use processes that protect student privacy and notify students of any projected additional student charges associated with the verification of student identity at the time of registration or enrollment. Please see the Electronic Code Federal Regulations for more information.
regulation about identify verification of students in Online courses
-
-
www.k-state.edu www.k-state.edu
-
The ethical standards outlined above apply throughout the academic community. These guidelines apply to faculty and research assistants in their possible use of students’ and colleagues’ research and ideas, as well as to students’ use either of source materials and authorities or of other students’ ideas and work.
Great statement to teach students how to refer to each other's work.
-
others result from sloppy scholarship or failure to follow proper format for crediting sources. For example:
I like the "sloppy" description of non-intentional plagerism
-
Plagiarism is taking credit for someone else’s ideas, work, or words.
plain definition of plagerism
-
All academic relationships ought to be governed by a sense of honor, fair play, trust, and a readiness to give appropriate credit to the intellectual endeavors of others where such credit is due. Since the academic community expects that the process of intellectual and creative endeavor is beneficial to a student, the student's original work, created in response to each assignment, is normally expected. The following rules and guidelines are intended not to replace an atmosphere of trust and cooperation in the pursuit of knowledge, but rather to assure due process and to provide guidelines for action in those instances where the proper relationships and attitudes have broken down.
I like that the guidelines are not intended to replace atmosphere of trust .....
-
-
mountainside.beaverton.k12.or.us mountainside.beaverton.k12.or.us
-
If plagiarism is suspected, students might be asked to defend or verify their work as their own in one of the following ways: Present notes, drafts, or works cited Produce an on-demand work sample Present an oral defense of work in question
Ways to verify work by students - I really like this.
-
malpractice outlined by the IB Organization as behavior that results in, or may result in, the candidate or any other candidate gaining an unfair advantage in one or more assessment components. The following definitions are helpful in understanding our complete definition of malpractice: Plagiarism is taking credit for someone else’s words, work or ideas without giving them credit. Collusion is letting someone copy from you or letting someone turn in your work as theirs. Duplication of work is turning in the same assignment for two or more classes. Misconduct during an assessment is copying someone’s answers, letting someone copy your work, looking up answers, bringing answers into the test room, or using tools/material that the teacher has not approved. Confidentiality is not sharing assessment content, question, or answers with students who have not yet taken the assessment.
Definition of dishonesty
-
-
www.plagiarism.org www.plagiarism.org
-
The author made an observation that it is possible to draw a link between plagiarism and the concept of "loyalty" (based on Sykes and Matza 1957) that can be exploited to explain students’ attitudes and improper academic practices. The author believes that the interviewed students commit plagiarism not because of their unethical or immoral intentions, but rather due to specific hierarchy of values that they follow.
Hierarchy of values rather an unethical or immoral intentions is interesting
-
-
catalog.belhaven.edu catalog.belhaven.edu
-
t is the student’s responsibility to provide for supervision of his/her children while they are on campus for class, in a virtual class,
Addressing children in virtual classroom is great!
-
Disruptive behavior in the physical classroom or the virtual classroom is not permitted. Students will receive a warning and may be asked to leave the classroom if necessary.
general statement about virtual classroom - disruptive behavior - but that's not defined
Tags
Annotators
URL
-
-
www.laspositascollege.edu www.laspositascollege.edu
-
Cheating, plagiarism Conduct that jeopardizes health and safety Tardiness Profanity Pornography Children or pets in class Private conversations or inappropriate displays of affection Uncooperativeness Continually leaving one’s seat Eating and drinking Reading unrelated materials Use of all unauthorized electronic devices, such as walkmans, phones, beepers, pagers, ipods, and music players. Soliciting of funds and/or signatures
some of these seem mild - but it could be great if they were enforced. Students need to learn how to behave professionally.
-
Disruptive behavior includes behavior that interferes with the legitimate instructional, administrative, or service functions of the college. However, should any behavior threaten the personal safety of any student, faculty member, staff, or administrator, or be displayed with such emotional intensity that it causes fear or concern in others, at that point such behavior is classified as a CRISIS and will necessitate a call to Campus Safety (925) 424-1699.
distinguishes between disruption and crisis
-
-
catalog.umd.umich.edu catalog.umd.umich.edu
-
If online class, faculty can moderate and/or temporarily disable LMS functions to prevent the student from further activity until a resolution is determined.
disable LMS access....not sure how we could do that.
-
Talking when the instructor or others are speaking
while I agree, I don't see this enforced much
-
-
www.sydney.edu.au www.sydney.edu.au
-
The following behaviours do not constitute bullying.(a) A single incident of unreasonable behaviour. However, single or one-offincidents of unreasonable conduct can also cause a risk to health and safetyand may breach other University policies and should not be ignored.(b) Reasonable management practices.(c) Low-level conflict as defined in subclause 8(3).(2) Reasonable management practices include (but are not limited to):(a) a direction to carry out reasonable duties and instructions;(b) a direction to comply with University rules, protocols, policies andprocedures;(c) setting reasonable goals, standards and deadlines;
Now this makes sense and defining "not bullying" is a great idea to protect people against false accusations.
-
-
assets.pewresearch.org assets.pewresearch.org
-
The public’s attitudes diverge in similarways on some of the more severe behaviors in the scenario. Most prominently, 85% of Americansthink that Julie experiences online harassment when she begins to receive vulgar messages abouther looks and sexual behavior. But substantially fewer (although still a majority at 66%) think thatthe social media platform has an obligation to step in and address that behavior.
So this explains it more people see it as harassment, but not all think the platform should step in, but they should if the student asks them to.
So should we have a policy stating students cannot copy discussion board entries outside of the LMS without student permissions
-
The public has a higher threshold for behaviors thatconstitute “online harassment” than for behaviors that necessitate a responsefrom social media platforms
Not sure I completely understand this, I think if a post is shared publicly without the original people in the incident being asked, there should be grounds for a Civil suit and much of this would stop.
-
Again,majorities agree that the platforms should step in to address behaviors such as threateningmessages.
platforms are responsible to police
-
ave found that online harassment is a common phenomenon in thedigital lives of many Americans, and that a majority of Americans feel harassment online is amajor problem.
prevalence of online harassment
-
-
catalog.belhaven.edu catalog.belhaven.edu
-
Project Teams serve several purposes:
Could easily be translated to online environment
-
the program provides a combination of traditional instruction and the enhancement of nontraditional instruction and learning that takes place within a Project Team.
These policies could many times apply to online teams - most of this is outdated info since there are no inperson AGOS courses anymore
-
The classrooms, student center, and project team locations are places to learn, to socialize and to grow. Each person must be recognized to have certain rights which do not conflict with the Community Expectations nor infringe upon the rights of others in the spirit of the University motto “to served, and not be served.” These rights include the following: The right to study without distraction. The right to personal privacy. The right to study in a clean environment. The right to be treated with respect and dignity. The right to hold different values. The right to redress grievances. The right to serve the community.
Online environments are not listed here but should be.
Right to be treated with respect and dignity
-
Academic Misconduct/Honor Code violations are related to a student’s class work, the appropriate response is vested in the professor.
Professor has to judge on academic misconduct / honor code violation
-
All communication between students and other students, or between students and faculty, must be conducted in a manner that is respectful, using language that is professional.
BU's 2 lines on student to student communication
-
-
scf.edu scf.edu
-
Degrees of Disciplinary Sanctions:
8 levels before permeant dismissal
-
The use of mobile devices (cellphones, beepers, tablets and other smart devices) in the classroom is determined by the faculty member’s mobile device use guidelines for that class. Adhere to the expectations communicated by the faculty member for that course.
phone use can be against policy if faculty state it is
-
. Computer and Network Abuse
Interesting the tech conduct is in the general conduct policy now.
-
any act that constitutes violent behavior and any other behavior that adversely affects the College or its educational programs or mission. Attempts to commit acts prohibited by the Code may also be addressed through the conduct process. All members of the College community, students, faculty and staff, have the responsibility to report nonacademic misconduct.
Everyone is a reporter
-
If a disruptive student refuses to leave when told, the faculty member will contact SCF Public Safety to remove the student.
explicit statement about having students removed by security
-
-
www.wiu.edu www.wiu.edu
-
Permanent Removal of Disruptive Student
Administrative withdrawal form
-
-
-
Violation of Student Code of Conduct ReportStudent's Name: _______________________________________________________________Student Identification Number: __________________________Instructor’s Name: ________________________________ Office Phone #: ________________Instructor’s E-mail Address: ______________________________________________________Course Title: _________________________________________________________________Course Number: _________________________ Section Number: ________Description of Incident (use additional pages if necessary)__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________Describe the instructions that were given to the student:______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________Was the student asked to leave the class? Yes _____ No_____N/A_________Did the student leave voluntarily? Yes _____ No _____Were the police contacted? Yes ____ No ____If yes, officer’s name: _____________________ Officer’s Department: ____________________Action taken by Police (list report number and whether arrest occurred):______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________Faculty Member’s Signature_____________________________________Date: ____________Submit copy of form electronically to: student, department chair, and to Student Judicial Programs (who will sharewith Student Development Office) at tp-sheridan@wiu.edu or via fax to 309-298-1203
form sample
-
-
www.k-state.edu www.k-state.edu
-
Non-threatening Disruptive Students
I live the division to non-threatening vs threatening students
-