text:
Wait — what's going on in Thailand? Here's the background.
Thai Raksa Chart party leader Preechapol Pongpanich shows Princess Ubolratana Rajakanya Sirivadhana Varnavadi's application of candidacy for prime minister in Bangkok last week. (Athit Perawongmetha/Reuters)
By Allen Hicken and
Joel Selway
Last week brought an unprecedented event in the history of Thai politics. Princess Ubolratana was named the Thai Raksa Chart party's nominee for prime minister, breaking decades of tradition that has kept the monarchy out of politics in Thailand. The same day, King Maha Vajiralongkorn, her younger brother, denounced her candidacy, calling it "inappropriate and unconstitutional." On Monday, Thailand's election commission officially removed her from consideration. Nevertheless, her momentary candidacy stirred the pot tremendously, as we explain.
A primer on Thai politics
Thailand has been under military rule since 2014, when a group of army officers, led by Gen. (now Prime Minister) Prayuth Chan-o-cha ousted the elected government, in the second coup in eight years. The main conflict lies between supporters of former prime minster Thaksin Shinawatra and those opposed to him. Thaksin and his party were elected in 2001 and reelected by a landslide in 2005. The first elected prime minister in Thai history to control a legislative majority, Thaksin worked to centralize power and sideline his rivals and critics, while championing policies that many voters found appealing, particularly in the populous but politically and economically neglected north and northeast.
[China's Belt and Road projects send investments to all corners of the globe. How does that affect people locally?]
But Thaksin's efforts challenged Thailand's traditional power centers, the military and the bureaucracy. Parties and voters in the country's center and south found themselves at an electoral disadvantage. Thaksin increasingly came into conflict with the monarchy and its supporters. While technically a constitutional monarch, Thailand's king continues to wield enormous political influence.
The pro- and anti-Thaksin conflict included more than a decade of polarized politics, several rounds of disruptive massive protests, bloody crackdowns on Thaksin supporters in 2010 and two coups, one in 2006 and another in 2014. Pro-Thaksin parties would win elections in 2001, 2005, 2007 and 2011, only to be ousted by conservative forces via coups or judicial maneuvering. The military and other anti-Thaksin forces claim to be defending the monarchy from Thaksin and his voters. The monarchy has endorsed various efforts to oust Thaksin-allied governments. Once in power, anti-Thaksin forces then aggressively enforce Thailand's strict lèse majesté laws, which prohibit defamation of, insult to or threat toward the monarchy.
The princess's announcement was a shock to the polarized system
This year, the military's direct control appears to be winding down, with elections scheduled for March 24, a contest between the same polarized factions. The princess's announcement threw things into chaos. Not only was a figure associated with the royal family directly entering electoral politics, something unprecedented in Thai history, but she was affiliating herself with a pro-Thaksin party.
How might her announcement, and the king's subsequent denouncement, affect the political landscape in Thailand?
The military and prime minister are losers, but the pro-Thaksin parties are winners
The announcement sent a strong signal that at least one faction of the monarchy — and perhaps even the monarchy as a whole — supports pro-Thaksin parties.
Prayuth, as leader of the coup group, has argued that he and the junta are defending the monarchy. He has attacked pro-Thaksin politicians (from arrests and interrogation to shutting down even minor protests and restricting free speech) and attempted to unify Thai society around a vision of a Thai state with the military and monarchy as the unchallenged centers of power. By accepting a nomination to be prime minister, Princess Ubolratana signaled that at least some factions of the royal family are ambivalent about Prayuth. This is likely to harm both his and his party's — the recently formed, pro-military Phalang Pracharat Party — success in the upcoming parliamentary elections.
Second, pro-Thaksin parties are clear beneficiaries — unless the military responds by suspending elections or banning pro-Thaksin parties, as has been rumored. The princess's candidacy adds credibility to their claims that they, too, support the royal family.
This will probably have electoral consequences
It's very difficult to know whether this will translate into increased support at the polls for pro-Thaksin parties. Given the lèse majesté laws, researchers have been unable to ask explicit questions about attitudes toward the monarchy, since few, if any, Thai citizens would answer such questions — and those who did would be unlikely to tell the truth.
To tackle this problem, just before the last democratic elections in 2011, we presented a nationally representative sample of about 8,000 Thai voters with descriptions of hypothetical candidates. We told some randomly selected voters that the candidate supported the monarchy; for others, we didn't mention the monarchy. Respondents saw only the description of a single candidate. We also provided other information, such as party affiliation and regional origin, which was randomly assigned across the hypothetical candidates.
This meant that we could see how support for the monarchy affected support for candidates, without asking people to break lèse majesté laws. We then simply compared average support on a four-point scale (Much More Likely to Support, Somewhat More Likely to Support, Somewhat Less Likely to Support, and Much Less Likely to Support) among the various hypothetical candidates.
Candidates from pro-Thaksin parties benefit most from associating themselves with the monarchy. The princess's candidacy may therefore counteract Prayuth's efforts to break down support for Pheu Thai, the pro-Thaksin party that won the last democratic elections. We did not specifically test the effect of the monarchy's endorsement for a candidate or party. But presumably, if a voter cares whether your party supports the monarchy, she is likely to care more if she thinks that the monarchy also supports your party.
[The 'new Cold War' with China is way overblown. Here's why.]
Could anti-Thaksin parties counter by emphasizing association with the monarchy?
Our study reveals that when anti-Thaksin forces espouse support for the monarchy, Thaksin supporters move from "Much Less Likely to Support" toward "Somewhat Less Likely to Support." But it does not increase support from either their own voters, supporters of other parties, or independents, suggesting that rallying round the king may not make an electoral difference.
Some have interpreted the king's subsequent prohibition of the princess's candidacy as evidence that he supports anti-Thaksin parties. But the king's announcement was politically neutral — and falls far short of explicit support for anti-Thaksin parties.
The princess's candidacy may have lasted just a day, but its effects will reverberate into the future.
[In Thailand's political drama, what did the king know and when did he know it?]
Allen Hicken is professor of political science at the University of Michigan and author of Building Party Systems in Developing Democracies (Cambridge University Press, 2009).
Joel Selway is associate professor of political science at Brigham Young University and author of Coalitions of the Well-being: How Electoral Rules and Ethnic Politics Shape Health Policy in Developing Countries (Cambridge University Press, 2015).
Analysis Trump falsely claims he tried to stop 'Send her back!' chants about Rep. Ilhan Omar
Senate poised to pass Sept. 11 victims bill, after votes demanded by Sens. Mike Lee, Rand Paul
Opinion Fox News launders Trump's most brazen lie
Opinion This French intellectual diagnosed America's current political malaise — in 1943


text:
A Vegan and Vegetarian Blogging Extravaganza
My Bloggers
Vegan Clothing & Shoes
Vegan Family
Vegan Books
+37 +1 Vote it up!
By Anita Vegana
Oct 3, 2012 9 Comments
A Few Vegan Writers
Instead of looking up books, I chose to find some names of authors and writers that are vegan and may interest you.
Carol J. Adams
This woman is not just an animal rights activists. She believes that there is a link between the oppression of animals and that of women. In her books, The Sexual Politics of Meat and The Pornography of Meat, she details the reasons why the two types of social issues are tied closely together.
He mainly focuses on fantasy and horror fiction. He not only writes but direct films and does visual artwork. He became famous thanks to a series of horror short stories written in the mid-80s.
Steven Best
Best is an author, animal rights activist and associate professor of philosophy at the University of Texas at El Paso. He is known as his more intellectual form of activism in his writing. He also co-founded the Institute for Critical Animal Studies (ICAS), formerly known as the Center on Animal Liberation Affairs (CALA). Environmental philosophy is another theme he enjoys approaching. Another achievement of his is the co-foundation of the North American Animal Liberation Press Office, which works as a central point for several animal rights groups.
Coleman, author of more than 100 books, was a general practitioner. The themes he uses most are health, politics, cricket and animal rights, as well as writing novels. They have been translated into 24 languages and are known worldwide. He is especially outspoken about medical malpractice and how pharmaceuticals are for profits first and foremost.
Born in India, this American physician and writer taught at Tufts University, Boston University and Harvard University, worked at the New England Memorial Hospital then went on to establishing his own practice, before becoming interested in ayurvedic medicine. Maharishi Mahesh Yogi is the one who interested him in this matter, and he then went on to found the American Association of Ayurvedic Medicine. From then on, this form of ancient medicine became an important part of his work.
Of his 65 books, 19 are New York Times bestsellers and they have been translated into 35 languages. He is now known as a prevalent figure in the 'mind-body-soul' philosophy. To the criticism he receives that says that he gives false hope to his patients, Chopra replies that traditional medicine is limited and that the consciousness needs to be included in the process.
T. Cooper
Although vegan, Cooper is a novel writer and focuses mainly on fiction. He does write non-fiction that has been published in magazines as well.
Gary Lawrence Francione
This writer is actually a lawyer for animal rights. He is the first ever to teach this topic in an American law school. He main focus was threefold: the differences between animal rights and animal welfare, the property status of animals, and the theory of animal rights based on sentience, not cognitive characteristics. His fights were mainly around animal welfare regulations, claiming that they are not sound and says that animals should not be regarded as property that humans merely 'use' mainly for economical interests, and that the way we treat them would be regarded as torture if humans were involved.
Garg is most famous for the foundation of Wordsmith.org which is directed at wordlovers across the world. His works are language-related and publishes them in magazines and newpapers.
Adam Gnade
Both musician and author, Gnade lives on a farm in Kansas. More a regionalist writer, his music and books have the same characters and he continues their development as he goes along. Most of his stories take place in Tijuana, Mexico, or near the US/Mexico border.
An activist and public speaker, this writer also enjoys cooking and teaching it to others. She uses her master's degree in English Literature to sell her recipes and advocate veganism.
Sarah Kramer
Kramer is an author that hails from Canada. Her books are hits and very well-known throughout the English vegan community. She has also published a few articles for such renowned magazines as Herbivore Magazine, Veg News and Shared Vision. Her passion is also digital: she owns and runs govegan.net. You will also see her face on the Secret Society of Vegans website.
Keith Mann
Born and raised in Britain, this animal rights campaigner and writer is accused by police to be the head of the Animal Liberation Front, surely because he acted as a spokesperson for the organisation. His popularity stems from his arrest in 1994, receiving a whopping 14 years in prison because of his activism, one of the longest ever received by any activist (his sentence was later reduced to 11 years on appeal). What did he do? He set meat lorries on fire, saying that the government was to blame for undermining the right to protest. He then gave his best shot at campaigning in May 2010 for parliament, saying that the point wasn't to win but to speak up and be heard.
Professor David W. Pearce
The late professor Pearce (he died of leukemia in 2005) specialises in Environmental Economics and is one of the pioneers of the field - he has actually published over 50 books and 300 academic articles on that very topic. His passion for nature and the environment are visible throughout his writings, but isn't afraid to speak against those who give environmental activism a bad reputation for doing a sloppy job, especially those that regulate policies.
Did you like my article? Please vote and follow me.
Please post on Twitter and Facebook.
More about activism, activist, magazine, writing, books, book, author, writer, vegan, animal, right
Anita Vegana
Top Posts: 31
Follow this blogger Never miss a post
BBQ Portobello Burgers with Sauteed Zucchini (55 votes)
Garden Fresh Vegan Split Pea Soup (53 votes)
Scrumptious Homemade Vegan Spaghetti Sauce (50 votes)
View all posts →
Veganara
Voted. Thank you for this info, I know a few of these people (Keith Mann is in my Friends list on FB, although I don't know him personally!) I think some of my friends do though). I am a real bookworm, so it is very valuable to me to know about vegan writers (I am trying to get published, myself!) You might be interested in my latest blog Fruit of the Womb - please check it out and vote if you like it!
JustVegan
Good post...voted!
I read Clive Barker's "Imajica". It's very creative, but those of you who are a bit prude, don't read it. He writes "fantasy" - yes, he writes about his SEXUAL fantasies! LOL! But if you're into that, read him!
SnakeWitch
Seriously? Now you got me curious...
Vote #6! interesting article! Great research!
Roopam
I will check these out...thanx for sharing the list...voted!
Voted! It's nice to see a list of names. Now we can look up books and review them here!
The Flaming Vegan Crew
The Flaming Vegan Crew did NOT know that Clive Barker was a vegan. Cool!
I am glad to be teaching the crew something new.
Top Posts in Vegan Books
+157 +1 Vote it up!
By MrGarrettS
Mr. G in: Guess Who's Coming to Dinner
By Caroline
Dec 26, 2016 1 Comment
5 Vegan Magazines You Will Want to Subscribe to in 2017
5 Great Vegan Books for Young Readers
By RAC
Dec 8, 2015 3 Comments
The Thugs are Back With Second Vegan Cookbook in "Thug Kitchen" Series
By Visala
Sep 20, 2015 5 Comments
3 Awesomesauce Vegan Books for Kids
More Top Posts...
The Flaming Vegan.
Your inbox.
There was a problem subscribing you.
Summer Salad Toppers: Add a lil extra to your salad!
Vegan Meal Planning Ideas and Tips for Fall
BANGS Shoes - Vegan and Ethically Made
LA: Finding the best vegan food in the city of angels
Can a Vegan Diet Reduce the Risk of Childhood Obesity?
Things You Can Do Now to Prep Your Organic Garden for Spring
5 Vegan Foods That Are Amazing for Your Skin
Animals in Art: Quirky & Creative or Exploitative & Cruel?
Connect with The Flaming Vegan
Follow @TheFlamingVegan
The Flaming Vegan
Blogger Tips & Tricks
Write for The Flaming Vegan
© 2020 The Flaming Vegan, LLC. All Rights Reserved. Patent Pending.
Sign Up to Vote!
10 second sign-up with Facebook or Google
Already a member? Log in to vote.

redpajama_set_name: RedPajamaCommonCrawl


Thinking of an outfit for the races, look no further than the fabulous collection of unique dresses in the Firths Jolaby Designer collection.
The Jolaby range was created to provide women with unique garments that they could make their own, feeling truly glamorous and beautiful.
Jolaby : Unique designer dresses with a signature style.
With each and every piece designed and made in England, Jolaby provide unique dresses for all occasions. Perfect for a wedding, a party dress, or to knock 'em dead at the Races. All dresses are made with great attention to detail and use only the highest quality materials.


text:
De man die niet in het systeem paste is een hoorspel naar Burnaya Zhizn Lazika Roitshvantsa (Het stormachtige leven van Lasik Roitschwantz, 1928) van Ilja Ehrenburg. G.A.M. Eickholt vertaalde het en de KRO zond het uit op zondag 13 december 1964. De regisseur was Willem Tollenaar. Het hoorspel duurde 53 minuten.

Rolbezetting

Tine Medema (eerste vrouw)
Trudy Libosan (tweede vrouw)
Lo van Hensbergen (verteller)
Corry van der Linden (Dunja)
Fé Sciarone (Fenitsja)
Jan Borkus (Pfeiffer)
Constant van Kerckhoven (Kugel)
Jérôme Reehuis (commissie & Natik)
Hans Veerman (Petrov)
Wam Heskes (Herstanovitsj)
Louis Bongers (medegevangene)
Maarten Kapteijn (Vasiljev)
Jos van Turenhout (Levka)
Dick Scheffer (Lasik)
Matthieu van Eysden (Boris)

Inhoud

Ehrenburgs roman was een versie van Jaroslav Hašeks De lotgevallen van de brave soldaat Švejk en Voltaires Candide. Het hoofdpersonage is een joodse getto-kleermaker die aan het Russische antisemitisme ontsnapt. Zijn avonturen brengen hem in een half dozijn landen en verscheidene gevangenissen. Hij is konijnenfokker in Toela, rabbi in Frankfurt, politie-informant voor Scotland Yard, filmacteur  in Berlijn, een hongerige pionier in Palestina en schilder in Parijs. Ehrenburg hekelt onder andere de periode van de Nieuwe Economische Politiek in de Sovjet-Unie.

Hoorspel van de KRO

redpajama_set_name: RedPajamaWikipedia


text:
Q: PHP doesn't let me output the html of certain sites, why? I'm trying to build a basic web scraper. It works fine for almost any website however some sites I'm unable to scrap, why is this? Here is my code on a site that works (this site):

<!doctype html>
<html lang="en-US">
  <body>
    <?php
      $url ='http://stackoverflow.com/';
      $output = file_get_contents($url);
      echo $output;
    ?>
  </body>
</html>

When run on my own local host this outputs the content of stackoverflow.com into my site. Here is a site this doesn't work for:

<!doctype html>
<html lang="en-US">
  <body>
    <?php
      $url ='https://www.galottery.com/en-us/home.html';
      $output = file_get_contents($url);
      echo $output;
    ?>
  </body>
</html>

Instead of loading the site I get this error:

Warning: file_get_contents(https://www.galottery.com/en-us/home.html): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden in C:\xampp\htdocs\projects\QD\webScraping\index.php on line 6

Why does this work for some sites and not for others? I thought this could be because one is a HTTPS site but I've tried this code for others like https://google.com and it works just fine.
I'm using XAMMP to run local PHP.

A: Either they are checking UserAgent, either they are forbide your IP-address.
To simulate correct UserAgent, you must use curl, like this:
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);

curl_setopt($ch, CURLOPT_URL, "https://www.galottery.com/en-us/home.html");
$result = curl_exec($ch);

echo $result;

Although, they may use some javascript-redirection, like. first you load web-page, they are setting a cookie and perform document.location.href redirect. than they are checking that cookie.
UPDATE: just tested, my solution works just fine.

A: It's work;
<?php

$ops =  array(
    'http' => array(
        'method' => "GET",
        'header' => "Accept-language: en\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\n" .
                    "Cookie: foo=bar\r\n" .
                    "User-Agent: Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.102011-10-16 20:23:10\r\n"
    )
);

$context = stream_context_create($ops);

echo file_get_contents('https://www.galottery.com/en-us/home.html', false, $context);

redpajama_set_name: RedPajamaStackExchange


Welcome Dr. Peter Godleski, our new Orthopedic Surgeon!
DR. GODLESKI IS NOW PERFORMING ORTHOPEDIC SURGICAL PROCEDURES OF THE EXTREMITIES FOR OUR PATIENTS. SURGICAL PROCEDURES WILL BE PERFORMED AT A CONVENIENT OUTPATIENT SURGICAL CENTER IN ALTAMONTE SPRINGS.
DR GODLESKI ADDS A CRITICAL ELEMENT TO THE ADVANTACARE TEAM. WE CONTINUE TO ADD THE SPECIALTIES AND MODALITIES YOUR PATIENTS NEED WITH THE PROFESSIONAL, COURTEOUS, RESPONSIVE SERVICE YOU HAVE COME TO EXPECT FROM US.
IMMEDIATE APPOINTMENTS FOR ORTHOPEDIC CONSULTATIONS ARE AVAILABLE IN OUR DAYTONA BEACH AND ALTAMONTE SPRINGS OFFICES.


text:
Tom Jones All Study Guides Homework Help Lesson Plans
by Henry Fielding
Critical Evaluation
Critical Overview
Essays and Criticism
Topics for Further Study
What is the significance of the Man of the Hill episode in Tom Jones?
"What is the significance of the Man of the Hill episode in Tom Jones?" eNotes Editorial, 20 Mar. 2022, https://www.enotes.com/homework-help/what-is-the-significance-of-the-man-of-the-hill-3044647. Accessed 28 Jan. 2023.
Chastity Chapin, M.F.A.
Editor, Professional Writer
B.A. from Columbia College Chicago M.F.A. from University of Notre Dame
The significance of the Man of the Hill episode in Tom Jones could relate to the similarities between Jack's life and Tom's life.
Before Tom gets to know the Man of the Hill—or Jack—he's told, "The country people are not, I believe, more afraid of the devil himself." Thus, the Man of the Hill already has something in common with Tom. They're both ostracized and outcasts.
Once Jack starts to tell his story, the reasons for their banishments align. Both men have tempestuous, passionate streaks and a hard time exerting self-control. They've also had the misfortune to find themselves in the company of people who exploited their temperaments. For Tom Jones, Blifil manipulates events to make them worse than they are. For Jack, his acquaintance with the "very diabolical" Sir George Gresham precipitates his exile.
Additionally, the two characters are at odds with their father/father figure. Blifil's skewed version of Tom's behavior leads Squire Allworthy to send him away. For Jack, his behavior caused his father to cut off financial assistance.
Arguably, the episode creates a parallel between Tom and Jack. The episode serves as a warning to Tom about what could happen to him if he doesn't get a better handle on his actions. Since Tom wants to be with Sophia and not alone like Jack, he could probably learn from Jack's experiences, and these lessons might significantly improve his future.
Last Updated by eNotes Editorial on March 21, 2022
Download the entire Tom Jones study guide as a printable PDF!
Describe Fielding's narrative style in Tom Jones.
Discuss the use of satire in Henry Fielding's novel Tom Jones.
What is the plot construction of Henry Fielding's Tom Jones?
What is the relationship between Tom Jones and Sophie?
What was the social background of 18th-century society?
"Fielding depicts varieties of female characters belonging to different strata of society in Tom Jones." Comment on this statement.
Latest answer posted May 13, 2020 at 8:54:42 PM
What are some themes in Tom Jones by Henry Fielding?
Latest answer posted July 03, 2010 at 2:25:28 AM
Analyse the role and function of the narrator in Tom Jones.
Latest answer posted March 31, 2012 at 10:01:35 AM
Explain how we can look at fiction as history.
In what way is Tom Jones a picaresque novel with a difference?


Click on names for details!
Most works which were formerly part of this family collection, were over the years disposed of to private or public collections in South Africa or overseas. They have been kept on this site for further research and educational purposes, unless included on the PELMAMA site!


text:
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/pci.h>
#include <linux/pci_regs.h>
#include <linux/errno.h>
#include <linux/pm.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/jiffies.h>
#include <linux/delay.h>
#include <linux/pci-aspm.h>
#include "../pci.h"

#ifdef MODULE_PARAM_PREFIX
#undef MODULE_PARAM_PREFIX
#endif
#define MODULE_PARAM_PREFIX "pcie_aspm."

/* Note: those are not register definitions */
#define ASPM_STATE_L0S_UP	(1)	/* Upstream direction L0s state */
#define ASPM_STATE_L0S_DW	(2)	/* Downstream direction L0s state */
#define ASPM_STATE_L1		(4)	/* L1 state */
#define ASPM_STATE_L0S		(ASPM_STATE_L0S_UP | ASPM_STATE_L0S_DW)
#define ASPM_STATE_ALL		(ASPM_STATE_L0S | ASPM_STATE_L1)

struct aspm_latency {
	u32 l0s;			/* L0s latency (nsec) */
	u32 l1;				/* L1 latency (nsec) */
};

struct pcie_link_state {
	struct pci_dev *pdev;		/* Upstream component of the Link */
	struct pcie_link_state *root;	/* pointer to the root port link */
	struct pcie_link_state *parent;	/* pointer to the parent Link state */
	struct list_head sibling;	/* node in link_list */
	struct list_head children;	/* list of child link states */
	struct list_head link;		/* node in parent's children list */

	/* ASPM state */
	u32 aspm_support:3;		/* Supported ASPM state */
	u32 aspm_enabled:3;		/* Enabled ASPM state */
	u32 aspm_capable:3;		/* Capable ASPM state with latency */
	u32 aspm_default:3;		/* Default ASPM state by BIOS */
	u32 aspm_disable:3;		/* Disabled ASPM state */

	/* Clock PM state */
	u32 clkpm_capable:1;		/* Clock PM capable? */
	u32 clkpm_enabled:1;		/* Current Clock PM state */
	u32 clkpm_default:1;		/* Default Clock PM state by BIOS */

	/* Exit latencies */
	struct aspm_latency latency_up;	/* Upstream direction exit latency */
	struct aspm_latency latency_dw;	/* Downstream direction exit latency */
	/*
	 * Endpoint acceptable latencies. A pcie downstream port only
	 * has one slot under it, so at most there are 8 functions.
	 */
	struct aspm_latency acceptable[8];
};

static int aspm_disabled, aspm_force;
static bool aspm_support_enabled = true;
static DEFINE_MUTEX(aspm_lock);
static LIST_HEAD(link_list);

#define POLICY_DEFAULT 0	/* BIOS default setting */
#define POLICY_PERFORMANCE 1	/* high performance */
#define POLICY_POWERSAVE 2	/* high power saving */

#ifdef CONFIG_PCIEASPM_PERFORMANCE
static int aspm_policy = POLICY_PERFORMANCE;
#elif defined CONFIG_PCIEASPM_POWERSAVE
static int aspm_policy = POLICY_POWERSAVE;
#else
static int aspm_policy;
#endif

static const char *policy_str[] = {
	[POLICY_DEFAULT] = "default",
	[POLICY_PERFORMANCE] = "performance",
	[POLICY_POWERSAVE] = "powersave"
};

#define LINK_RETRAIN_TIMEOUT HZ

static int policy_to_aspm_state(struct pcie_link_state *link)
{
	switch (aspm_policy) {
	case POLICY_PERFORMANCE:
		/* Disable ASPM and Clock PM */
		return 0;
	case POLICY_POWERSAVE:
		/* Enable ASPM L0s/L1 */
		return ASPM_STATE_ALL;
	case POLICY_DEFAULT:
		return link->aspm_default;
	}
	return 0;
}

static int policy_to_clkpm_state(struct pcie_link_state *link)
{
	switch (aspm_policy) {
	case POLICY_PERFORMANCE:
		/* Disable ASPM and Clock PM */
		return 0;
	case POLICY_POWERSAVE:
		/* Disable Clock PM */
		return 1;
	case POLICY_DEFAULT:
		return link->clkpm_default;
	}
	return 0;
}

static void pcie_set_clkpm_nocheck(struct pcie_link_state *link, int enable)
{
	struct pci_dev *child;
	struct pci_bus *linkbus = link->pdev->subordinate;

	list_for_each_entry(child, &linkbus->devices, bus_list) {
		if (enable)
			pcie_capability_set_word(child, PCI_EXP_LNKCTL,
						 PCI_EXP_LNKCTL_CLKREQ_EN);
		else
			pcie_capability_clear_word(child, PCI_EXP_LNKCTL,
						   PCI_EXP_LNKCTL_CLKREQ_EN);
	}
	link->clkpm_enabled = !!enable;
}

static void pcie_set_clkpm(struct pcie_link_state *link, int enable)
{
	/* Don't enable Clock PM if the link is not Clock PM capable */
	if (!link->clkpm_capable && enable)
		enable = 0;
	/* Need nothing if the specified equals to current state */
	if (link->clkpm_enabled == enable)
		return;
	pcie_set_clkpm_nocheck(link, enable);
}

static void pcie_clkpm_cap_init(struct pcie_link_state *link, int blacklist)
{
	int capable = 1, enabled = 1;
	u32 reg32;
	u16 reg16;
	struct pci_dev *child;
	struct pci_bus *linkbus = link->pdev->subordinate;

	/* All functions should have the same cap and state, take the worst */
	list_for_each_entry(child, &linkbus->devices, bus_list) {
		pcie_capability_read_dword(child, PCI_EXP_LNKCAP, &reg32);
		if (!(reg32 & PCI_EXP_LNKCAP_CLKPM)) {
			capable = 0;
			enabled = 0;
			break;
		}
		pcie_capability_read_word(child, PCI_EXP_LNKCTL, &reg16);
		if (!(reg16 & PCI_EXP_LNKCTL_CLKREQ_EN))
			enabled = 0;
	}
	link->clkpm_enabled = enabled;
	link->clkpm_default = enabled;
	link->clkpm_capable = (blacklist) ? 0 : capable;
}

/*
 * pcie_aspm_configure_common_clock: check if the 2 ends of a link
 *   could use common clock. If they are, configure them to use the
 *   common clock. That will reduce the ASPM state exit latency.
 */
static void pcie_aspm_configure_common_clock(struct pcie_link_state *link)
{
	int same_clock = 1;
	u16 reg16, parent_reg, child_reg[8];
	unsigned long start_jiffies;
	struct pci_dev *child, *parent = link->pdev;
	struct pci_bus *linkbus = parent->subordinate;
	/*
	 * All functions of a slot should have the same Slot Clock
	 * Configuration, so just check one function
	 */
	child = list_entry(linkbus->devices.next, struct pci_dev, bus_list);
	BUG_ON(!pci_is_pcie(child));

	/* Check downstream component if bit Slot Clock Configuration is 1 */
	pcie_capability_read_word(child, PCI_EXP_LNKSTA, &reg16);
	if (!(reg16 & PCI_EXP_LNKSTA_SLC))
		same_clock = 0;

	/* Check upstream component if bit Slot Clock Configuration is 1 */
	pcie_capability_read_word(parent, PCI_EXP_LNKSTA, &reg16);
	if (!(reg16 & PCI_EXP_LNKSTA_SLC))
		same_clock = 0;

	/* Configure downstream component, all functions */
	list_for_each_entry(child, &linkbus->devices, bus_list) {
		pcie_capability_read_word(child, PCI_EXP_LNKCTL, &reg16);
		child_reg[PCI_FUNC(child->devfn)] = reg16;
		if (same_clock)
			reg16 |= PCI_EXP_LNKCTL_CCC;
		else
			reg16 &= ~PCI_EXP_LNKCTL_CCC;
		pcie_capability_write_word(child, PCI_EXP_LNKCTL, reg16);
	}

	/* Configure upstream component */
	pcie_capability_read_word(parent, PCI_EXP_LNKCTL, &reg16);
	parent_reg = reg16;
	if (same_clock)
		reg16 |= PCI_EXP_LNKCTL_CCC;
	else
		reg16 &= ~PCI_EXP_LNKCTL_CCC;
	pcie_capability_write_word(parent, PCI_EXP_LNKCTL, reg16);

	/* Retrain link */
	reg16 |= PCI_EXP_LNKCTL_RL;
	pcie_capability_write_word(parent, PCI_EXP_LNKCTL, reg16);

	/* Wait for link training end. Break out after waiting for timeout */
	start_jiffies = jiffies;
	for (;;) {
		pcie_capability_read_word(parent, PCI_EXP_LNKSTA, &reg16);
		if (!(reg16 & PCI_EXP_LNKSTA_LT))
			break;
		if (time_after(jiffies, start_jiffies + LINK_RETRAIN_TIMEOUT))
			break;
		msleep(1);
	}
	if (!(reg16 & PCI_EXP_LNKSTA_LT))
		return;

	/* Training failed. Restore common clock configurations */
	dev_err(&parent->dev, "ASPM: Could not configure common clock\n");
	list_for_each_entry(child, &linkbus->devices, bus_list)
		pcie_capability_write_word(child, PCI_EXP_LNKCTL,
					   child_reg[PCI_FUNC(child->devfn)]);
	pcie_capability_write_word(parent, PCI_EXP_LNKCTL, parent_reg);
}

/* Convert L0s latency encoding to ns */
static u32 calc_l0s_latency(u32 encoding)
{
	if (encoding == 0x7)
		return (5 * 1000);	/* > 4us */
	return (64 << encoding);
}

/* Convert L0s acceptable latency encoding to ns */
static u32 calc_l0s_acceptable(u32 encoding)
{
	if (encoding == 0x7)
		return -1U;
	return (64 << encoding);
}

/* Convert L1 latency encoding to ns */
static u32 calc_l1_latency(u32 encoding)
{
	if (encoding == 0x7)
		return (65 * 1000);	/* > 64us */
	return (1000 << encoding);
}

/* Convert L1 acceptable latency encoding to ns */
static u32 calc_l1_acceptable(u32 encoding)
{
	if (encoding == 0x7)
		return -1U;
	return (1000 << encoding);
}

struct aspm_register_info {
	u32 support:2;
	u32 enabled:2;
	u32 latency_encoding_l0s;
	u32 latency_encoding_l1;
};

static void pcie_get_aspm_reg(struct pci_dev *pdev,
			      struct aspm_register_info *info)
{
	u16 reg16;
	u32 reg32;

	pcie_capability_read_dword(pdev, PCI_EXP_LNKCAP, &reg32);
	info->support = (reg32 & PCI_EXP_LNKCAP_ASPMS) >> 10;
	info->latency_encoding_l0s = (reg32 & PCI_EXP_LNKCAP_L0SEL) >> 12;
	info->latency_encoding_l1  = (reg32 & PCI_EXP_LNKCAP_L1EL) >> 15;
	pcie_capability_read_word(pdev, PCI_EXP_LNKCTL, &reg16);
	info->enabled = reg16 & PCI_EXP_LNKCTL_ASPMC;
}

static void pcie_aspm_check_latency(struct pci_dev *endpoint)
{
	u32 latency, l1_switch_latency = 0;
	struct aspm_latency *acceptable;
	struct pcie_link_state *link;

	/* Device not in D0 doesn't need latency check */
	if ((endpoint->current_state != PCI_D0) &&
	    (endpoint->current_state != PCI_UNKNOWN))
		return;

	link = endpoint->bus->self->link_state;
	acceptable = &link->acceptable[PCI_FUNC(endpoint->devfn)];

	while (link) {
		/* Check upstream direction L0s latency */
		if ((link->aspm_capable & ASPM_STATE_L0S_UP) &&
		    (link->latency_up.l0s > acceptable->l0s))
			link->aspm_capable &= ~ASPM_STATE_L0S_UP;

		/* Check downstream direction L0s latency */
		if ((link->aspm_capable & ASPM_STATE_L0S_DW) &&
		    (link->latency_dw.l0s > acceptable->l0s))
			link->aspm_capable &= ~ASPM_STATE_L0S_DW;
		/*
		 * Check L1 latency.
		 * Every switch on the path to root complex need 1
		 * more microsecond for L1. Spec doesn't mention L0s.
		 */
		latency = max_t(u32, link->latency_up.l1, link->latency_dw.l1);
		if ((link->aspm_capable & ASPM_STATE_L1) &&
		    (latency + l1_switch_latency > acceptable->l1))
			link->aspm_capable &= ~ASPM_STATE_L1;
		l1_switch_latency += 1000;

		link = link->parent;
	}
}

static void pcie_aspm_cap_init(struct pcie_link_state *link, int blacklist)
{
	struct pci_dev *child, *parent = link->pdev;
	struct pci_bus *linkbus = parent->subordinate;
	struct aspm_register_info upreg, dwreg;

	if (blacklist) {
		/* Set enabled/disable so that we will disable ASPM later */
		link->aspm_enabled = ASPM_STATE_ALL;
		link->aspm_disable = ASPM_STATE_ALL;
		return;
	}

	/* Configure common clock before checking latencies */
	pcie_aspm_configure_common_clock(link);

	/* Get upstream/downstream components' register state */
	pcie_get_aspm_reg(parent, &upreg);
	child = list_entry(linkbus->devices.next, struct pci_dev, bus_list);
	pcie_get_aspm_reg(child, &dwreg);

	/*
	 * Setup L0s state
	 *
	 * Note that we must not enable L0s in either direction on a
	 * given link unless components on both sides of the link each
	 * support L0s.
	 */
	if (dwreg.support & upreg.support & PCIE_LINK_STATE_L0S)
		link->aspm_support |= ASPM_STATE_L0S;
	if (dwreg.enabled & PCIE_LINK_STATE_L0S)
		link->aspm_enabled |= ASPM_STATE_L0S_UP;
	if (upreg.enabled & PCIE_LINK_STATE_L0S)
		link->aspm_enabled |= ASPM_STATE_L0S_DW;
	link->latency_up.l0s = calc_l0s_latency(upreg.latency_encoding_l0s);
	link->latency_dw.l0s = calc_l0s_latency(dwreg.latency_encoding_l0s);

	/* Setup L1 state */
	if (upreg.support & dwreg.support & PCIE_LINK_STATE_L1)
		link->aspm_support |= ASPM_STATE_L1;
	if (upreg.enabled & dwreg.enabled & PCIE_LINK_STATE_L1)
		link->aspm_enabled |= ASPM_STATE_L1;
	link->latency_up.l1 = calc_l1_latency(upreg.latency_encoding_l1);
	link->latency_dw.l1 = calc_l1_latency(dwreg.latency_encoding_l1);

	/* Save default state */
	link->aspm_default = link->aspm_enabled;

	/* Setup initial capable state. Will be updated later */
	link->aspm_capable = link->aspm_support;
	/*
	 * If the downstream component has pci bridge function, don't
	 * do ASPM for now.
	 */
	list_for_each_entry(child, &linkbus->devices, bus_list) {
		if (pci_pcie_type(child) == PCI_EXP_TYPE_PCI_BRIDGE) {
			link->aspm_disable = ASPM_STATE_ALL;
			break;
		}
	}

	/* Get and check endpoint acceptable latencies */
	list_for_each_entry(child, &linkbus->devices, bus_list) {
		u32 reg32, encoding;
		struct aspm_latency *acceptable =
			&link->acceptable[PCI_FUNC(child->devfn)];

		if (pci_pcie_type(child) != PCI_EXP_TYPE_ENDPOINT &&
		    pci_pcie_type(child) != PCI_EXP_TYPE_LEG_END)
			continue;

		pcie_capability_read_dword(child, PCI_EXP_DEVCAP, &reg32);
		/* Calculate endpoint L0s acceptable latency */
		encoding = (reg32 & PCI_EXP_DEVCAP_L0S) >> 6;
		acceptable->l0s = calc_l0s_acceptable(encoding);
		/* Calculate endpoint L1 acceptable latency */
		encoding = (reg32 & PCI_EXP_DEVCAP_L1) >> 9;
		acceptable->l1 = calc_l1_acceptable(encoding);

		pcie_aspm_check_latency(child);
	}
}

static void pcie_config_aspm_dev(struct pci_dev *pdev, u32 val)
{
	pcie_capability_clear_and_set_word(pdev, PCI_EXP_LNKCTL,
					   PCI_EXP_LNKCTL_ASPMC, val);
}

static void pcie_config_aspm_link(struct pcie_link_state *link, u32 state)
{
	u32 upstream = 0, dwstream = 0;
	struct pci_dev *child, *parent = link->pdev;
	struct pci_bus *linkbus = parent->subordinate;

	/* Nothing to do if the link is already in the requested state */
	state &= (link->aspm_capable & ~link->aspm_disable);
	if (link->aspm_enabled == state)
		return;
	/* Convert ASPM state to upstream/downstream ASPM register state */
	if (state & ASPM_STATE_L0S_UP)
		dwstream |= PCI_EXP_LNKCTL_ASPM_L0S;
	if (state & ASPM_STATE_L0S_DW)
		upstream |= PCI_EXP_LNKCTL_ASPM_L0S;
	if (state & ASPM_STATE_L1) {
		upstream |= PCI_EXP_LNKCTL_ASPM_L1;
		dwstream |= PCI_EXP_LNKCTL_ASPM_L1;
	}
	/*
	 * Spec 2.0 suggests all functions should be configured the
	 * same setting for ASPM. Enabling ASPM L1 should be done in
	 * upstream component first and then downstream, and vice
	 * versa for disabling ASPM L1. Spec doesn't mention L0S.
	 */
	if (state & ASPM_STATE_L1)
		pcie_config_aspm_dev(parent, upstream);
	list_for_each_entry(child, &linkbus->devices, bus_list)
		pcie_config_aspm_dev(child, dwstream);
	if (!(state & ASPM_STATE_L1))
		pcie_config_aspm_dev(parent, upstream);

	link->aspm_enabled = state;
}

static void pcie_config_aspm_path(struct pcie_link_state *link)
{
	while (link) {
		pcie_config_aspm_link(link, policy_to_aspm_state(link));
		link = link->parent;
	}
}

static void free_link_state(struct pcie_link_state *link)
{
	link->pdev->link_state = NULL;
	kfree(link);
}

static int pcie_aspm_sanity_check(struct pci_dev *pdev)
{
	struct pci_dev *child;
	u32 reg32;

	/*
	 * Some functions in a slot might not all be PCIe functions,
	 * very strange. Disable ASPM for the whole slot
	 */
	list_for_each_entry(child, &pdev->subordinate->devices, bus_list) {
		if (!pci_is_pcie(child))
			return -EINVAL;

		/*
		 * If ASPM is disabled then we're not going to change
		 * the BIOS state. It's safe to continue even if it's a
		 * pre-1.1 device
		 */

		if (aspm_disabled)
			continue;

		/*
		 * Disable ASPM for pre-1.1 PCIe device, we follow MS to use
		 * RBER bit to determine if a function is 1.1 version device
		 */
		pcie_capability_read_dword(child, PCI_EXP_DEVCAP, &reg32);
		if (!(reg32 & PCI_EXP_DEVCAP_RBER) && !aspm_force) {
			dev_info(&child->dev, "disabling ASPM on pre-1.1 PCIe device.  You can enable it with 'pcie_aspm=force'\n");
			return -EINVAL;
		}
	}
	return 0;
}

static struct pcie_link_state *alloc_pcie_link_state(struct pci_dev *pdev)
{
	struct pcie_link_state *link;

	link = kzalloc(sizeof(*link), GFP_KERNEL);
	if (!link)
		return NULL;
	INIT_LIST_HEAD(&link->sibling);
	INIT_LIST_HEAD(&link->children);
	INIT_LIST_HEAD(&link->link);
	link->pdev = pdev;
	if (pci_pcie_type(pdev) == PCI_EXP_TYPE_DOWNSTREAM) {
		struct pcie_link_state *parent;
		parent = pdev->bus->parent->self->link_state;
		if (!parent) {
			kfree(link);
			return NULL;
		}
		link->parent = parent;
		list_add(&link->link, &parent->children);
	}
	/* Setup a pointer to the root port link */
	if (!link->parent)
		link->root = link;
	else
		link->root = link->parent->root;

	list_add(&link->sibling, &link_list);
	pdev->link_state = link;
	return link;
}

/*
 * pcie_aspm_init_link_state: Initiate PCI express link state.
 * It is called after the pcie and its children devices are scaned.
 * @pdev: the root port or switch downstream port
 */
void pcie_aspm_init_link_state(struct pci_dev *pdev)
{
	struct pcie_link_state *link;
	int blacklist = !!pcie_aspm_sanity_check(pdev);

	if (!aspm_support_enabled)
		return;

	if (!pci_is_pcie(pdev) || pdev->link_state)
		return;
	if (pci_pcie_type(pdev) != PCI_EXP_TYPE_ROOT_PORT &&
	    pci_pcie_type(pdev) != PCI_EXP_TYPE_DOWNSTREAM)
		return;

	/* VIA has a strange chipset, root port is under a bridge */
	if (pci_pcie_type(pdev) == PCI_EXP_TYPE_ROOT_PORT &&
	    pdev->bus->self)
		return;

	down_read(&pci_bus_sem);
	if (list_empty(&pdev->subordinate->devices))
		goto out;

	mutex_lock(&aspm_lock);
	link = alloc_pcie_link_state(pdev);
	if (!link)
		goto unlock;
	/*
	 * Setup initial ASPM state. Note that we need to configure
	 * upstream links also because capable state of them can be
	 * update through pcie_aspm_cap_init().
	 */
	pcie_aspm_cap_init(link, blacklist);

	/* Setup initial Clock PM state */
	pcie_clkpm_cap_init(link, blacklist);

	/*
	 * At this stage drivers haven't had an opportunity to change the
	 * link policy setting. Enabling ASPM on broken hardware can cripple
	 * it even before the driver has had a chance to disable ASPM, so
	 * default to a safe level right now. If we're enabling ASPM beyond
	 * the BIOS's expectation, we'll do so once pci_enable_device() is
	 * called.
	 */
	if (aspm_policy != POLICY_POWERSAVE) {
		pcie_config_aspm_path(link);
		pcie_set_clkpm(link, policy_to_clkpm_state(link));
	}

unlock:
	mutex_unlock(&aspm_lock);
out:
	up_read(&pci_bus_sem);
}

/* Recheck latencies and update aspm_capable for links under the root */
static void pcie_update_aspm_capable(struct pcie_link_state *root)
{
	struct pcie_link_state *link;
	BUG_ON(root->parent);
	list_for_each_entry(link, &link_list, sibling) {
		if (link->root != root)
			continue;
		link->aspm_capable = link->aspm_support;
	}
	list_for_each_entry(link, &link_list, sibling) {
		struct pci_dev *child;
		struct pci_bus *linkbus = link->pdev->subordinate;
		if (link->root != root)
			continue;
		list_for_each_entry(child, &linkbus->devices, bus_list) {
			if ((pci_pcie_type(child) != PCI_EXP_TYPE_ENDPOINT) &&
			    (pci_pcie_type(child) != PCI_EXP_TYPE_LEG_END))
				continue;
			pcie_aspm_check_latency(child);
		}
	}
}

/* @pdev: the endpoint device */
void pcie_aspm_exit_link_state(struct pci_dev *pdev)
{
	struct pci_dev *parent = pdev->bus->self;
	struct pcie_link_state *link, *root, *parent_link;

	if (!parent || !parent->link_state)
		return;

	down_read(&pci_bus_sem);
	mutex_lock(&aspm_lock);
	/*
	 * All PCIe functions are in one slot, remove one function will remove
	 * the whole slot, so just wait until we are the last function left.
	 */
	if (!list_is_last(&pdev->bus_list, &parent->subordinate->devices))
		goto out;

	link = parent->link_state;
	root = link->root;
	parent_link = link->parent;

	/* All functions are removed, so just disable ASPM for the link */
	pcie_config_aspm_link(link, 0);
	list_del(&link->sibling);
	list_del(&link->link);
	/* Clock PM is for endpoint device */
	free_link_state(link);

	/* Recheck latencies and configure upstream links */
	if (parent_link) {
		pcie_update_aspm_capable(root);
		pcie_config_aspm_path(parent_link);
	}
out:
	mutex_unlock(&aspm_lock);
	up_read(&pci_bus_sem);
}

/* @pdev: the root port or switch downstream port */
void pcie_aspm_pm_state_change(struct pci_dev *pdev)
{
	struct pcie_link_state *link = pdev->link_state;

	if (aspm_disabled || !pci_is_pcie(pdev) || !link)
		return;
	if ((pci_pcie_type(pdev) != PCI_EXP_TYPE_ROOT_PORT) &&
	    (pci_pcie_type(pdev) != PCI_EXP_TYPE_DOWNSTREAM))
		return;
	/*
	 * Devices changed PM state, we should recheck if latency
	 * meets all functions' requirement
	 */
	down_read(&pci_bus_sem);
	mutex_lock(&aspm_lock);
	pcie_update_aspm_capable(link->root);
	pcie_config_aspm_path(link);
	mutex_unlock(&aspm_lock);
	up_read(&pci_bus_sem);
}

void pcie_aspm_powersave_config_link(struct pci_dev *pdev)
{
	struct pcie_link_state *link = pdev->link_state;

	if (aspm_disabled || !pci_is_pcie(pdev) || !link)
		return;

	if (aspm_policy != POLICY_POWERSAVE)
		return;

	if ((pci_pcie_type(pdev) != PCI_EXP_TYPE_ROOT_PORT) &&
	    (pci_pcie_type(pdev) != PCI_EXP_TYPE_DOWNSTREAM))
		return;

	down_read(&pci_bus_sem);
	mutex_lock(&aspm_lock);
	pcie_config_aspm_path(link);
	pcie_set_clkpm(link, policy_to_clkpm_state(link));
	mutex_unlock(&aspm_lock);
	up_read(&pci_bus_sem);
}

/*
 * pci_disable_link_state - disable pci device's link state, so the link will
 * never enter specific states
 */
static void __pci_disable_link_state(struct pci_dev *pdev, int state, bool sem,
				     bool force)
{
	struct pci_dev *parent = pdev->bus->self;
	struct pcie_link_state *link;

	if (aspm_disabled && !force)
		return;

	if (!pci_is_pcie(pdev))
		return;

	if (pci_pcie_type(pdev) == PCI_EXP_TYPE_ROOT_PORT ||
	    pci_pcie_type(pdev) == PCI_EXP_TYPE_DOWNSTREAM)
		parent = pdev;
	if (!parent || !parent->link_state)
		return;

	if (sem)
		down_read(&pci_bus_sem);
	mutex_lock(&aspm_lock);
	link = parent->link_state;
	if (state & PCIE_LINK_STATE_L0S)
		link->aspm_disable |= ASPM_STATE_L0S;
	if (state & PCIE_LINK_STATE_L1)
		link->aspm_disable |= ASPM_STATE_L1;
	pcie_config_aspm_link(link, policy_to_aspm_state(link));

	if (state & PCIE_LINK_STATE_CLKPM) {
		link->clkpm_capable = 0;
		pcie_set_clkpm(link, 0);
	}
	mutex_unlock(&aspm_lock);
	if (sem)
		up_read(&pci_bus_sem);
}

void pci_disable_link_state_locked(struct pci_dev *pdev, int state)
{
	__pci_disable_link_state(pdev, state, false, false);
}
EXPORT_SYMBOL(pci_disable_link_state_locked);

void pci_disable_link_state(struct pci_dev *pdev, int state)
{
	__pci_disable_link_state(pdev, state, true, false);
}
EXPORT_SYMBOL(pci_disable_link_state);

void pcie_clear_aspm(struct pci_bus *bus)
{
	struct pci_dev *child;

	if (aspm_force)
		return;

	/*
	 * Clear any ASPM setup that the firmware has carried out on this bus
	 */
	list_for_each_entry(child, &bus->devices, bus_list) {
		__pci_disable_link_state(child, PCIE_LINK_STATE_L0S |
					 PCIE_LINK_STATE_L1 |
					 PCIE_LINK_STATE_CLKPM,
					 false, true);
	}
}

static int pcie_aspm_set_policy(const char *val, struct kernel_param *kp)
{
	int i;
	struct pcie_link_state *link;

	if (aspm_disabled)
		return -EPERM;
	for (i = 0; i < ARRAY_SIZE(policy_str); i++)
		if (!strncmp(val, policy_str[i], strlen(policy_str[i])))
			break;
	if (i >= ARRAY_SIZE(policy_str))
		return -EINVAL;
	if (i == aspm_policy)
		return 0;

	down_read(&pci_bus_sem);
	mutex_lock(&aspm_lock);
	aspm_policy = i;
	list_for_each_entry(link, &link_list, sibling) {
		pcie_config_aspm_link(link, policy_to_aspm_state(link));
		pcie_set_clkpm(link, policy_to_clkpm_state(link));
	}
	mutex_unlock(&aspm_lock);
	up_read(&pci_bus_sem);
	return 0;
}

static int pcie_aspm_get_policy(char *buffer, struct kernel_param *kp)
{
	int i, cnt = 0;
	for (i = 0; i < ARRAY_SIZE(policy_str); i++)
		if (i == aspm_policy)
			cnt += sprintf(buffer + cnt, "[%s] ", policy_str[i]);
		else
			cnt += sprintf(buffer + cnt, "%s ", policy_str[i]);
	return cnt;
}

module_param_call(policy, pcie_aspm_set_policy, pcie_aspm_get_policy,
	NULL, 0644);

#ifdef CONFIG_PCIEASPM_DEBUG
static ssize_t link_state_show(struct device *dev,
		struct device_attribute *attr,
		char *buf)
{
	struct pci_dev *pci_device = to_pci_dev(dev);
	struct pcie_link_state *link_state = pci_device->link_state;

	return sprintf(buf, "%d\n", link_state->aspm_enabled);
}

static ssize_t link_state_store(struct device *dev,
		struct device_attribute *attr,
		const char *buf,
		size_t n)
{
	struct pci_dev *pdev = to_pci_dev(dev);
	struct pcie_link_state *link, *root = pdev->link_state->root;
	u32 val = buf[0] - '0', state = 0;

	if (aspm_disabled)
		return -EPERM;
	if (n < 1 || val > 3)
		return -EINVAL;

	/* Convert requested state to ASPM state */
	if (val & PCIE_LINK_STATE_L0S)
		state |= ASPM_STATE_L0S;
	if (val & PCIE_LINK_STATE_L1)
		state |= ASPM_STATE_L1;

	down_read(&pci_bus_sem);
	mutex_lock(&aspm_lock);
	list_for_each_entry(link, &link_list, sibling) {
		if (link->root != root)
			continue;
		pcie_config_aspm_link(link, state);
	}
	mutex_unlock(&aspm_lock);
	up_read(&pci_bus_sem);
	return n;
}

static ssize_t clk_ctl_show(struct device *dev,
		struct device_attribute *attr,
		char *buf)
{
	struct pci_dev *pci_device = to_pci_dev(dev);
	struct pcie_link_state *link_state = pci_device->link_state;

	return sprintf(buf, "%d\n", link_state->clkpm_enabled);
}

static ssize_t clk_ctl_store(struct device *dev,
		struct device_attribute *attr,
		const char *buf,
		size_t n)
{
	struct pci_dev *pdev = to_pci_dev(dev);
	int state;

	if (n < 1)
		return -EINVAL;
	state = buf[0]-'0';

	down_read(&pci_bus_sem);
	mutex_lock(&aspm_lock);
	pcie_set_clkpm_nocheck(pdev->link_state, !!state);
	mutex_unlock(&aspm_lock);
	up_read(&pci_bus_sem);

	return n;
}

static DEVICE_ATTR(link_state, 0644, link_state_show, link_state_store);
static DEVICE_ATTR(clk_ctl, 0644, clk_ctl_show, clk_ctl_store);

static char power_group[] = "power";
void pcie_aspm_create_sysfs_dev_files(struct pci_dev *pdev)
{
	struct pcie_link_state *link_state = pdev->link_state;

	if (!pci_is_pcie(pdev) ||
	    (pci_pcie_type(pdev) != PCI_EXP_TYPE_ROOT_PORT &&
	     pci_pcie_type(pdev) != PCI_EXP_TYPE_DOWNSTREAM) || !link_state)
		return;

	if (link_state->aspm_support)
		sysfs_add_file_to_group(&pdev->dev.kobj,
			&dev_attr_link_state.attr, power_group);
	if (link_state->clkpm_capable)
		sysfs_add_file_to_group(&pdev->dev.kobj,
			&dev_attr_clk_ctl.attr, power_group);
}

void pcie_aspm_remove_sysfs_dev_files(struct pci_dev *pdev)
{
	struct pcie_link_state *link_state = pdev->link_state;

	if (!pci_is_pcie(pdev) ||
	    (pci_pcie_type(pdev) != PCI_EXP_TYPE_ROOT_PORT &&
	     pci_pcie_type(pdev) != PCI_EXP_TYPE_DOWNSTREAM) || !link_state)
		return;

	if (link_state->aspm_support)
		sysfs_remove_file_from_group(&pdev->dev.kobj,
			&dev_attr_link_state.attr, power_group);
	if (link_state->clkpm_capable)
		sysfs_remove_file_from_group(&pdev->dev.kobj,
			&dev_attr_clk_ctl.attr, power_group);
}
#endif

static int __init pcie_aspm_disable(char *str)
{
	if (!strcmp(str, "off")) {
		aspm_policy = POLICY_DEFAULT;
		aspm_disabled = 1;
		aspm_support_enabled = false;
		printk(KERN_INFO "PCIe ASPM is disabled\n");
	} else if (!strcmp(str, "force")) {
		aspm_force = 1;
		printk(KERN_INFO "PCIe ASPM is forcibly enabled\n");
	}
	return 1;
}

__setup("pcie_aspm=", pcie_aspm_disable);

void pcie_no_aspm(void)
{
	/*
	 * Disabling ASPM is intended to prevent the kernel from modifying
	 * existing hardware state, not to clear existing state. To that end:
	 * (a) set policy to POLICY_DEFAULT in order to avoid changing state
	 * (b) prevent userspace from changing policy
	 */
	if (!aspm_force) {
		aspm_policy = POLICY_DEFAULT;
		aspm_disabled = 1;
	}
}

/**
 * pcie_aspm_enabled - is PCIe ASPM enabled?
 *
 * Returns true if ASPM has not been disabled by the command-line option
 * pcie_aspm=off.
 **/
int pcie_aspm_enabled(void)
{
       return !aspm_disabled;
}
EXPORT_SYMBOL(pcie_aspm_enabled);

bool pcie_aspm_support_enabled(void)
{
	return aspm_support_enabled;
}
EXPORT_SYMBOL(pcie_aspm_support_enabled);

redpajama_set_name: RedPajamaGithub


Bates RV is an RV Repair and Service center providing recreational vehicle support to the Seffner, FL area.
Warranty - Front Air Conditioner failed (3 months old) Excellent! I scheduled the maintenance from Key West, where the failure occurred. Bates is next door to a very large, first-class, reasonable RV Park (Tampa East) and 4 miles from the original Camping World. Lisa, their charming and efficient service representative, personally checked me in, witnessed the service technician's initial evaluation of the problem, then came to the waiting room to advise me of the status. The technician updated me several times during the service, then notified me when the problem was fixed. I was there for less than three hours.
Replace carburetor on Onan Generator. Required to re-schedule four times because B&B wasn't didn't have time to do work. When they did get around to it, they damaged the carburetor gasket and couldn't get the carburetor adjusted properly. They finally gave up and said it was as good as they could get it (even though the generator wasn't running properly and would not take a full load. Would not agree to a follow-up appointment to try to get it running better.
This past January we called Bates RV for a service appointment. The earliest they could take us was February. We had a 'laundry list' of minor repairs/maintenance needs. They couldn't seem to get the estimate to us (email or snail-mail) for us sign as they required. Or, we'd get the 'gotta order the parts' story. After sitting 5 weeks on their lot and after many failed tries on the phone, my husband finally left a message that he'd be there in two days to pick up our rig - finished or not! They started work the morning he arrived. They only had time to replace a missing gasoline tank bracket and install tire valve extensions. They still hadn't ordered the new skid wheel we needed. Work on the TV antenna, the new skid wheel, missing screws outside, replacing the fresh water inlet valve, and minor electrical issues were left undone. The work they finally did do was OK and charges were fair, but their customer relations are very poor. We couldn't get through to anyone but the front desk person who refused to take a message but kept putting us into voice mail. We had to make real pests of ourselves to get any kind response. We won't go back - ever!


Discussion in 'Site Discussion' started by Turbo Lover, Sep 19, 2014.
The timezones listed in the Gameday thread get pretty weird and confusing sometimes. Some hosts use GMT, some use EST, some use something else entirely, and they don't make sense for where the Gameday is being hosted. Why list the time for a US Gameday in GMT, which is more appropriate for Europeans, etc. There's always a link to a timezone converter in the thread, but it's a pretty clunky way to solve something this simple.
The gameday times should be listed in a universal time standard, like UTC, or we should list two or three common timezones. At the very least, list the time the Gameday starts in a timezone appropriate to the region. The timezone converter should be relegated to more obscure timezones or people who don't know what UTC is, it shouldn't be a necessity for finding out when an event begins because there is no standard timezone used by Gameday hosts.
More importantly, it would be nice to have the timezones labeled with the UTC offset so that you can actually grasp what they are without any risk for confusion.
Listing GMT isn't helpful since I have found that a staggering number of UK residents don't understand that the time the UK uses during summer is not GMT. But BST.
My general assumption is that everyone knows what their time is +/- from GMT or UTC and since we're very much an international community running international events, the timezone that should be listed every time is UTC any extra are optional.


Technology is inevitably rooted in our systems. Whether you are an adult or a kid, your life revolves around technology. True?
Kids, filled with curiosity, cope better with technological evolutions. They adapt faster to new gadgets and software. The ease of using devices and affordable prices has transformed liking into addiction. Kids are suddenly exposed to explicit content and dangerous online predators.
What parents fear is the incapability of kids to distinguish right from wrong. Addition of Top 10 parental control apps on play store is a result of indiscipline among kids.
The parental control app is a powerful tool to keep a check on the online activities of kids. Right from their last phone call to their current location, everything can be tracked. Have you downloaded a parental control app yet?
What do you need to know about your kid's digital life?
Are you sure you know everything your kids do online?
Before we plunge into the various functionalities of Parental control apps, Parents need to be aware of activities kids run on their devices.
Call logs-Who calls your kid and who does your kid contact?
Social Media Activities– In which social media sites do your kids have accounts? Who do they talk to and what do they post?
Gaming Applications– What genre of games do your kids play? How much time do they spend on these games? Do they initiate chats with strangers?
Websites– What kind of sites do your kids access? Are these websites informative or harmful?
Location– Which locations are your kids commonly positioned? Are the neighborhoods safe?
Advertisements– What kind of ads are popping up in your kids' browsing sessions? Is it showing any violent or adult content?
Above mentioned questions are the most basic questions parents need to find out about their curious little ones. Now, the bigger problem is how parents can figure out the answers? What app can they rely on these answers?
Also Read: How to stop an attacker of Adware?
What are Parental Control Apps?
Parental Control Apps are just another technological development to balance kids' digital life. These apps designed for kids under 18 who considered as minors.
These apps are intended to capture all activities of kids on their gadgets. The idea behind the app is to allow parents to supervise their kids' digital activities without any interference.
In case any suspicious activity or content is noticed, app reports parents immediately, and they can take appropriate actions through the app.
Bit guardian is one of the most successful apps and frequently downloaded app across the globe. This app offers interesting functionalities to monitor and discipline your kids on their digital devices.
App install Block– This feature disables kids to download any new app.
App Block– You can block apps from your kids' device that are inappropriate according to you.
Kiosk Mode– Kiosk mode allows customizing the mobile device as per your desire. The mobile device will is controlled by remote control.
Time Schedule – The time schedule is applicable in restricting screen time of the device. You can have screen time control for different apps or the device. Set bedtime, playtime, study time, etc. for your kids' device.
Panic Button– This app comes with an SOS button which your kids can use in an emergency. The app will send panic alerts to the parent device along with information about the current location of your kid.
Calls– All calls, incoming and outgoing calls on kids' devices can are tracked and blocked.
Anti-theft – Locate your kids' lost mobile on the map. You can call your kids' phone even if it is put on silent mode. And if you want your kids' phone not to be misused by any stranger, immediately factory reset the phone using the parent device.
Geofence & Speed– You can not only track your kids' current outdoor location but set virtual geographic boundaries and speed limits. In case your kids' cross the boundary or exceed the speed limit, the app sends an instant notification to the parent device.
"Apart from the Bit Guardian parental control, you could also try www.xnspy.com/in/ — a parental control that lets you set alerts on the phone activity of your children. The alerts work best for parents who don't have the time or wouldn't want to go through their children's entire phone history, which could, sometimes, include their personal things.
How to cope with kids' opposition to Parental Control apps?
You will face disapproval from your kids for downloading parental control apps. It might seem like an intervention to your kid's privacy; however, parental control is mandatory at their age.
Do not ask unnecessary questions if not required. Unless the app sends you any suspicious alert, do not interfere with your kids' activities.
Educate kids about the need for screen time.
Be transparent and openly inform kids what all you can monitor from the parent device. This way they will not feel cheated.
Discuss calmly with your kids regarding cyber attacks and cyber crimes when they are most receptive, like while driving to sports practice class, etc.
Do not let any thought make you think otherwise, download the app now and experience a new generation of child care.
Today anyone has an iOS tablet. iPhones are so widespread that this has led to developing a millions of applications that provide servises such as games, entertainment and others. To download any of these applications a user must get an account at Apple Store. But not all games are available there as they don't meet the Apple rules. To avoid this a new app was developed – TutuApp. This helper works on iOS run phones and tablets and it has the biggest store of games. We name a few: Minecraft, Fortnite, Pokemon and many others. They come with zero ads and locked content! Whant to know more? Visit TutuApp iOS Download page to download Tutu App for free on your iOS tablet. Installation instructions for Tutu App are available at that page.


text:
Spielberg Blasts #OscarsSoWhite: 'No Inherent or Dormant Racism' in the Academy
Hollywood titan Steven Spielberg became the latest industry figure to weigh in on the #OscarsSoWhite controversy on Thursday, saying in an interview that he does not believe there is "inherent or dormant racism" in the Academy of Motion Picture Arts and Sciences (AMPAS) and that he is "not 100 percent" supportive of the Academy's dramatic rule changes to increase diversity within the organization.
In an extensive interview on the Hollywood Reporter's "Awards Chatter" podcast, the three-time Oscar-winner said that he was "surprised" that NWA biopic Straight Outta Compton failed to earn a Best Picture nomination, and that Idris Elba failed to earn an acting nod for his role in the Netflix war drama Beasts of No Nation.
However, the director said that the perceived snubs for those films are not rooted in racism within AMPAS, as critics have charged. Spielberg said that the #OscarsSoWhite controversy — which erupted anew last month after the Academy nominated exclusively white actors in top categories for a second consecutive year — was rooted more in a lack of diversity among filmmakers, screenwriters and studio executives.
"You have to look back a couple of years, where Lupita [Nyong'o] was recognized for 12 Years a Slave [and] 12 Years a Slave won Best Picture, you know?" Spielberg told THR. "I don't believe that there is inherent or dormant racism because of the amount of white Academy members."
With stars like Will Smith and Spike Lee pledging to boycott this year's Oscars, the Academy unveiled a dramatic overhaul of its voting rules and organizational structure last month, with the aim of doubling the number of female and minority Academy voters by 2020. The rules limit voting rights to Academy members who have been "active" in filmmaking over at least a 10-year period.
In a series of open letters after the rule changes were announced, many longtime Academy members blasted the organization for what they charged was an overt effort to strip older, white members of their voting rights in order to boost the number of younger, more politically correct voters.
In his interview with THR, Spielberg — whose film Bridge of Spies is up for Best Picture this year — said he was "not 100 percent" supportive of the Academy's rule changes, which will not affect the voting for this year's Oscars.
"I'm also not 100 percent sure that taking votes away from Academy members who have paid their dues and maybe are retired now and have done great service — maybe they've not won a nomination, which would have given them immunity to the new rules, but they have served proudly and this is their industry too — to strip their votes? I'm not 100 percent behind that," he said.
Spielberg was quick to add that he thinks it is "very, very important" that the Academy has begun to open up its membership to more diverse filmmakers "in a proactive way."
"But it's not just the Academy, and I think we have to stop pointing fingers and blaming the Academy," he told THR. "It's people that hire, it's people at the main gate of studios and independents. It's the stories that are being told. It's who's writing diversity — it starts on the page. And we all have to be more proactive in getting out there and just seeking talent."
When asked whether he takes the diversity of cast and crew members into account when staffing his own projects, Spielberg said his films have often included actors and crew members from diverse backgrounds even without consciously considering the issue.
"Look, I have two black children, you know? I've been colorblind my entire life," he said. "When you just look at the films I've made, and look at the people who've worked on those films — look at the diversity within the crew, within the cast — I've always [had it]."
In addition to Best Picture, Spielberg's Bridge of Spies is up for five additional Oscars at this year's ceremony, including Best Supporting Actor for Mark Rylance and Best Original Screenplay for Matt Charman and Joel and Ethan Coen. Spielberg has been nominated for Best Director seven times over his decades-long career, winning twice for 1993's Schindler's List and 1998's Saving Private Ryan. He was also awarded the Irving Thalberg honorary Oscar in 1987.
The 88th Academy Awards air Sunday, February 28 on ABC.
Entertainment#OscarsSoWhiteAcademy of Motion Picture Arts and SciencesAMPASboycottOscarsSteven Spielberg
New Virginia AG Jason Miyares Immediately Launches Investigations
Boger's Crew Not Expected to Work Again This Season After Blown Call


Let's hear your thoughts, and don't forget to send us your ticket stubs and flyers too! The Custard Factory, Midlands Art Centre, The Jam House, Adrian Boult Hall… the list is long.
"I founded Birmingham Jazz in 1976 with the help of six other enthusiasts; we each put £25 on my dining room table and said we would promote some concerts for as long as the money held out. Birmingham Jazz has promoted live jazz ever since – a remarkable achievement. Our first concert was with Barbara Thompson's Paraphernalia; I'm not sure who were our second but Mike Osborne's trio with Harry Miller and Tony Levin was the third, on 7 November 1976.
These concerts took place in the Warwick Suite of the Grand Hotel, Colmore Row, Birmingham that was our home base for the first five years. The musicians gave me permission to record the concert as a souvenir on my Maxwell C180 tape and Yamaha recorder, and it subsequently remained unplayed in my files until unearthed in 2009; amazingly the tape had not deteriorated in any way and gives a very high quality documentation of an outstanding evening's music making.
Birmingham Jazz is a promoting organisation which presents contemporary jazz in the city on a year-round basis. A limited company with a nine-strong board of directors, Birmingham Jazz was formed in 1976 and is funded annually by Birmingham City Council, West Midlands Arts and The Musicians' Union. It has also been awarded grants from the Lottery and Touring Departments of Arts Council of England, and, more recently, under the Regional Arts Lottery Programme. In 1999 it won an award under the Jazz Promoter Scheme run by PRS and Jazz Services. It has in the past also received a grant from the Foundation for Sport and the Arts. The company employs no paid staff, but special projects are managed on a free-lance, consultancy basis.
Birmingham Jazz promotes between 30 and 35 major concerts per year, in the CBSO Centre in Berkley Street off Broad Street (capacity 300), the mac (Midlands Arts Centre) (capacity 200) and the Adrian Boult Hall (capacity 500). It has also promoted at The Drum, The Custard Factory and the Sanctuary Night Club. In addition, local musicians are featured in regular weekly sessions at the Strathallan Hotel. These take place at Sunday lunchtime and are funded by the hotel itself and the Musicians' Union. A recent development has been a commuter jazz programme run from 5pm to 7pm on Friday evenings at the Fiddle & Bone pub; that bands that play at these sessions are all based in Birmingham and the West Midlands.
Birmingham Jazz is a promoting organisation which presents contemporary jazz in the city on a year-round basis. A limited company with a nine-strong board of directors, Birmingham Jazz was formed in 1976 and is funded annually by West Midlands Arts, Birmingham City Council and The Musicians' Union. It has also been awarded grants from the Lottery and Touring Departments of Arts Council of England, and more recently from the Regional Arts Lottery Programme run by West Midlands Arts. It won an award under the Jazz Promoter Scheme run by the PRS and Jazz Services in 1999 and 2001, and had a grant from the Foundation for Sports and Arts in 1996.
The company employs no paid staff, but special projects are managed on a free-lance, consultancy basis. It is, however, to employ a part-time administrator in 2002.
Birmingham Jazz promotes up to 30 to 35 concerts a year in various venues around the city. These are the CBSO Centre (capacity 300), the mac (Midland Arts Centre: Capacity 200),the Adrian Boult Hall (capacity 500) and The Glee Club (capacity 400) a new venue to be tried out in the autumn. It has also promoted at The Drum, The Custard Factory and the Sanctuary Night Club. In addition, local musicians are featured in regular weekly sessions at the Fiddle and Bone pub. These sessions take place at Sunday lunchtime and are funded by the pub itself and the Musicians' Union. A recent development has been a commuter jazz programme featuring local bands run in short seasons (not every week) from 5pm to 7pm at the Fiddle and Bone pub.
Birmingham Jazz believes strongly in the development of contemporary jazz and new work. It taked a broad definition of 'jazz' and is interested in collaborative projects that draw on other musics. This does not mean that older styles of jazz are neglected.
In addition to the promotion of one-off concerts, Birmingham Jazz is increasingly pursuing the development of a diverse range of specially commissioned projects. In the last twelve years this has become a very important and exciting part of Birmingham Jazz's activity and the society has moved towards becoming more of a `producing' organisation than a `receiving' organisation.
These projects have either been in the area of contemporary jazz or in collaborative projects with other styles of music or other artforms, notably dance.
A weekend devoted to the music of Mike Gibbs, a leading jazz composer (1989).
A week's residency for Cuban trumpeter Arturo Sandoval to work with the Birmingham based Latin Jazz group Como No (1992).
The Twin Cities Octet which involved the creation of a jazz octet with two players from each of the twin cities of Birmingham, Frankfurt, Lyon and Milan. This also involved commissioning the leader of the octet Giorgio Gaslini (from Milan) to write a suite for the octet (1992).
The Bimhuis Project in which leading bands from the lively Dutch jazz scene appeared in Birmingham as part of the European Arts Festival (1992).
The commissioning of the British composer/pianist Julian Joseph to write an extended piece entitled Winds of Change for his Forum Project band. As well being premiered in Birmingham, the project toured nationally and is likely to be recorded. This was funded by the Prudential Award.
The commissioning of Dutch pianist Michiel Braam to write arrangements of Lennie Tristano pieces and a new work in the spirit of Tristano's music performed in Amsterdam, and in Birmingham as part of the Towards The Millennium 40s Festival. This was broadcast on Dutch National Radio. The project was repeated as part of the 90s Festival in year 2000.
The initial planning of the creation of a UK/New York version of Wayne Horvitz's New York Composers' Orchestra. This appeared in Birmingham in May 1995 and toured nationally on the CMN. The London concert was broadcast on Radio Three.
The commissioning of Iain Ballamy to write a piece for the Apollo Saxophone Quartet and his new quartet Acme. This has now been recorded for the B+W Music label.
The commissioning of Tom Bancroft to write an extended work for his Big Band. This was toured nationally and the London concert broadcast on Radio Three.
The commissioning of David Murray to write new big band music for the CMN tour of his UK/USA Big Band. The London concert will be broadcast on Radio Three.
The commissioning of Barbara Thompson, JulianJoseph, Dave O'Higgins and Albert Mangelsdorff to write or arrange pieces for a special sextet formed for a 20th anniversary concert. The concert was recorded for broadcast on Radio Three.
The commissioning of Clark Tracey to arrange Tubby Hayes's big band pieces for the first performance of the Tubby Hayes Legacy Orchestra.
The commissioning of Iain Ballamy to write music for the dance piece Oblique choreographed by Ranjabati Sircar.
Co-commissioning with BCMG the American composer David Lang to write The Passing Measures for Marty Ehrlich and BCMG.
The commissioning of Billy Jenkins to prepare improvisations for shorts by Norman McClaren and the play station game Tomb Raider, and Huw Warren to write a score for the silent film classic Steamboat Bill Jnr featuring Buster Keaton.
The commissioning of Julian Arguelles to write 50 minutes of new music for his octet to be performed as part of a short tour, and to write a 10-minute piece for the Apollo Saxophone Quartet. The latter was co-commissioned with Blackheath Concert Halls.
The commissioning of Billy Jenkins to write a piece for six drummers to be performed as part of a club. This piece The Drum Machine Plays the Battle March of Consumerism was premiered at The Sanctuary Night Club in May and also featured during ArtsFest 2000.
Four commissions for Bobby Previte, Mark Lockheart, Dave Pattman and Gerard Presencer as part of the Forward Festival.
A percussion piece by American drummer Peter Erskine for the Birmingham-based Afro-Caribbean dance theatre company Kokuma. This was choreographed by Kokuma's artistic director, Jackie Guy, for a performance in 1991 and an extended version became their main touring production in 1992/93. The music was subsequently recorded on the American Interworld label.
A commission for Mike Gibbs to write Bloods of Dust, a piece for American jazz guitarist, Bill Frisell and Birmingham Contemporary Music Group (1992). This piece received its second performance in October 1995 as part of The Series. An extract of the piece is on an Unknown Public CD.
The orchestration of several pieces by Mark-Anthony Turnage by Mike Gibbs for the Creative Jazz Orchestra (1994).This was toured nationally on the CMN and the London concert broadcast on Radio Three.


McDaniel SS, et al. 2011. The ketogenic diet inhibits the mammalian target of rapamycin (mTOR) pathway. Epilepsia 52:e7-11. Short-term side effects of a low-carb diet regime contain fatigue, weakness, headaches, bad breath, and constipation or diarrhea. Other potential complications consist of bone loss, nutrient deficiencies, and gastrointestinal problems. The ketogenic diet regime may possibly look like the Jekyll to the Hyde-like low-fat craze of the 1990s. The bulk of current study finds that the middle ground in between the two extremes is a lot more helpful for all round overall health. Make it effortless for yourself: Eat at least two servings a week of fatty fish (salmon, sardines, mackerel) and cook with a variety of good quality fats (olive oil, canola More inspiring ideas oil, avocado oil) all through the week.If you have doubts about your well being, see your medical doctor and get testing completed just before and a few months following. Numerous physicians are supportive of low carb dieting now and comprehend that, when followed appropriately, it is a healthy way to eat. Gauge how you are feeling. Normally you will go by way of an adjustment period in the 1st week, but check it out does pass.I graduated with a degree in nutrition and was brought up in the globe of conventional wisdom - i.e., a calorie is a calorie, low fat higher carb diets are very good, the low carb cadre of Atkins and his predecessors is evil, etc. I tend to view things that upset tradition with wholesome skepticism, so I was really shocked that this book forced me to re-evaluate the dietary theories and concepts that I was taught.Choose the healthiest options of what you do see at dinner. If you are out for dinner, choose the healthier items on the menu, like grilled chicken, brown rice, or salad, alternatively of the most greasy or high-fat choices. You can still be healthier even though consuming out.Kristie Sullivan struggled with her weight for her entire life in spite of attempting every single diet imaginable, but then she finally lost a 120 pounds and enhanced her health on a keto diet program. Srivastava S, et al. 2013. A ketogenic diet regime increases brown adipose tissue mitochondrial proteins and UCP1 levels in mice. IUBMB Life 65:58-66.When you commence a low carbohydrate diet regime, you happen to be assured to expertise intense carbohydrate cravings. There are supplements that can aid curb cravings, such as chromium and vanadium (such as in Thermofactor ), gymnema sylvestre (but you gotta take about 4000+ mg per day of it, which implies you'd truly want a physician's brand version), L-tryptophan or amino acids (these curb appetite with trace amounts of calories, no carbs, and will support if the problem is a serotonin deficiency) and even foods explanation like those I demonstrate in my video: 5 Methods To Suppress Your Appetite Without Taking Pills or Capsules.With all the new folks locating, switching, and transitioning into a low carb diet program, I figured it was about time I put with each other an FAQ on all the frequent queries that are asked when somebody is beginning out. Generally, your cells use glucose, or sugar, as their primary supply of fuel. Even so, most of your cells harley18v8626421.joomla.com can also use other fuel sources. If you have any inquiries relating to exactly where and how to use Check it out, you can contact us at our own webpage. This includes fatty acids, as well as ketones, which are also known as ketone bodies. - Targeted ketogenic diet (TKD): This diet program enables you to add carbohydrates when on a diet plan.Decide whether you might have a virus. Viruses are a widespread cause of diarrhea that are passed from person to individual via handshakes, shared utensils, and touching the same surfaces. Youngsters attending college or going to daycare are at increased risk of obtaining a virus that can result in bacteria. If you or your youngster not too long ago spent time in a public region trafficked by a lot of other people, you may possibly have picked up a virus.Fish and seafood are portion of check it out, but their consumption varied in the previous according to how close folks lived to the sea. Chicken, eggs and modest amounts of dairy, such as cheese and yoghurt, are there in moderation, but red meat and sweets would hardly ever be consumed. The diet regime involves a tiny amount of wine with meals. Pasta, bread and potatoes are variables from 1 area to one more. It is really a higher-carbohydrate diet, which was fine when folks have been physically active on farms or fishing boats.This is also the time that your physique starts to make hormones recognized as 'Ketones' that are secreted from the body by means of urination, saliva and sweating. It is difficult to eat also significantly flaxseed if you're consuming a balanced diet, but you should be cautious not to consume as well considerably uncooked flaxseed. Attempt a mix of cooked and uncooked flaxseed to hold your diet balanced.Dr. Lovelady warns breast-feeding moms to keep away from extremely low carbohydrate diets. You need to have dietary carbohydrates to make lactose, the sugar in milk. Otherwise, any dietary pattern can operate, so concentrate on foods that you appreciate and that make you feel happy, not deprived. Program snacks that are simple to grab and consume with a single hand (the other getting occupied by the baby), like an appetizing bowl of fruit and nuts on the kitchen counter.


The Happy Prince was made by the greatest movie producer. When I want to relax, I just sit on couch, open my favorite website with movies online and watch this movie... I respect such a great energy this movie bring with it. The Happy Prince just has everything movie need, you can watch it with your family, with your girlfriend or boyfriend or with your friends and everyone will enjoy it. No movie ever filled me with such a strange energy. I'm very impressed by this movie excellent storyline. I have never left such good review for any movie in my life. I think this movie is very underrated compared with other crap out there. I like that I don't have to pay for cinema or netflix to watch new movies like The Happy Prince. I have no doubt, you will be excited with this movie soon.


There's a lot of buzz right now about a new info product that reveals a secret "backdoor" into Google advertising. The secret allows you to specifically target your ads to appear in Gmail. The idea is that while the search volume is lower for Gmail, it is highly targeted traffic and will convert at a higher rate.
The $97 info product is by Ryan Deiss and is available at GmailMindTricks.com (not an affiliate link) if you're interested.
If you'd like to know how to make your ads appear in Gmail without spending $97, check out this YouTube video posted by Austin Lau, an Agency Media Planner at Google.
I watched the GmailMindTricks intro video but have not purchased the product. Ryan is a reputable internet marketer. Presumably the $97 product includes more than what is on the above YouTube video.
In either case, I thought the info contained in the YouTube video was worth sharing.
Have you had your ads appear in Gmail before? What has been your experience compare to "regular" AdWords?


text:
Q: Loop through a function every 5 seconds then reset after the last time I need to loop through the function switch_tiles so the function will run as switch_tiles(1); switch_tiles(2); etc... but it needs to be i++ every 5 seconds. I've tried putting the interval inside the loop but that didn't help either. Also, after i = 5 I want it to reset.
window.setInterval(function(){
 for(var i = 1; i < 5; i++){
   switch_tiles(i);
 }
}, 5000);

This is all the function does so that's not too important to the question. Just added for context.
function switch_tiles(n){
  var last = $('.active').attr('id');
  $('#'+last).removeClass('fas');
  $('#'+last).removeClass('active');
  $('#'+last).addClass('far');

  $('.active_tile').fadeOut();
  $('#tile_' + n).fadeIn();

  $('#circle_' + n).removeClass('far');
  $('#circle_' + n).addClass('fas');
  $('#circle_' + n).addClass('active');
}

A: Try this:
var i = 1;
function myFunction() {
  if (i > 5)
    i = 1;

  switch_tiles(i++);
  window.setTimeout(myFunction, 5000);
}
myFunction();

A: var i = 1;
window.setInterval(function(){
   if (i == 5){
      //reset over here.
   }
   switch_tiles(i);
   i++;
}, 5000);

A: i = 0;
window.setInterval(function() {
  i++;
  if(i > 5){
    i = 1;
  }
  switch_tiles(i)
}, 5000);

You just need to tell i to be whatever number you want at any time.  Also, this all depends on if you have your tiles at base-0 or base-1.  You would put your i++ before or after the switch_tiles()

A: What you want is probably something like that:
window.setInterval(function(){
  switch_tiles(i++);
  if (i>5) i=0;
  }, 5000);

This will run the function every 5 sec, increasing the parameter every time.
Note that this uses a global variable window.i so it's sort of dirty...


text:
– japoński sprinter specjalizujący się na dystansie 200 metrów, brązowy medalista olimpijski z Pekinu w sztafecie 4 x 100 metrów. Siedmiokrotny mistrz swego kraju (bieg na 200 metrów – 2000, 2001, 2001, 2006 i 2007; bieg na 100 metrów – 2003 i 2004). Wielokrotny medalista mistrzostw Azji oraz igrzysk azjatyckich (w różnych konkurencjach), a także swego największego indywidualnego sukcesu - brązowego medalu na mistrzostwach świata 2003.

Reprezentował również Azję na pucharze świata w 2006 roku gdzie wywalczył 3. miejsce w swej dyscyplinie dla swego kontynentu z wynikiem 20,30 s.

Po trzech latach przewy Suetsugu powrócił do startów w październiku 2011.

Jego rekordem życiowym jest 20,03 s (2003), jest to aktualny rekord Azji. Suetsugu jest także rekordzistą Japonii w sztafecie 4 x 100 metrów – 38,03 w 2007 (do 2014 roku wynik ten był rekordem Azji).

Przypisy

Bibliografia
  [dostęp 4 października 2011].

Japońscy medaliści olimpijscy
Japońscy sprinterzy
Medaliści Letnich Igrzysk Olimpijskich 2008
Medaliści Mistrzostw Świata w Lekkoatletyce 2003
Sportowcy związani z Kumamoto
Ludzie urodzeni w Kumamoto
Urodzeni w 1980