linux-pm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* (unknown)
@ 2013-08-21 20:09 sebastian.capella
  0 siblings, 0 replies; 35+ messages in thread
From: sebastian.capella @ 2013-08-21 20:09 UTC (permalink / raw)
  To: linux-doc; +Cc: rob, len.brown, pavel, rjw, linux-pm, linux-kernel

From: Sebastian Capella <sebastian.capella@linaro.org>
Subject: [PATCH RFC 2/2] PM / Hibernate: add section for resume options

Expand the existing documentation to explicitly list the options for
resuming a hibernation image, including the manual resume option which
can be used from the initrd or initramfs and the kernel init resume.

Signed-off-by: Sebastian Capella <sebastian.capella@linaro.org>
---
 Documentation/power/swsusp.txt |   15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/Documentation/power/swsusp.txt b/Documentation/power/swsusp.txt
index 0b4b63e..079160e 100644
--- a/Documentation/power/swsusp.txt
+++ b/Documentation/power/swsusp.txt
@@ -50,6 +50,19 @@ echo N > /sys/power/image_size
 
 before suspend (it is limited to 500 MB by default).
 
+. The resume process checks for the presence of the resume device,
+if found, it then checks the contents for the hibernation image signature.
+If both are found, it resumes the hibernation image.
+
+. The resume process may be triggered in two ways:
+  1) During lateinit:  If resume=/dev/your_swap_partition is specified on
+     the kernel command line, lateinit runs the resume process.  If the
+     resume device has not been probed yet, the resume process fails and
+     bootup continues.
+  2) Manually from an initrd or initramfs:  May be run from
+     the init script by using the /sys/power/resume file.  It is vital
+     that this be done prior to remounting any filesystems (even as
+     read-only) otherwise data may be corrupted.
 
 Article about goals and implementation of Software Suspend for Linux
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -326,7 +339,7 @@ Q: How can distributions ship a swsusp-supporting kernel with modular
 disk drivers (especially SATA)?
 
 A: Well, it can be done, load the drivers, then do echo into
-/sys/power/disk/resume file from initrd. Be sure not to mount
+/sys/power/resume file from initrd. Be sure not to mount
 anything, not even read-only mount, or you are going to lose your
 data.
 
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 35+ messages in thread
* (unknown), 
@ 2014-01-30 21:11 Sebastian Capella
  0 siblings, 0 replies; 35+ messages in thread
From: Sebastian Capella @ 2014-01-30 21:11 UTC (permalink / raw)
  To: linux-kernel, linux-mm, linux-pm, linaro-kernel, patches

Patchset related to hibernation resume:
  - enhancement to make the use of an existing resume file more general
  - add kstrimdup function which trims and duplicates a string

  Both patches are based on the 3.13 tag.  This was tested on a
  Beaglebone black with partial hibernation support, and compiled for
  x86_64.

[PATCH v5 1/2] mm: add kstrimdup function
  include/linux/string.h |    1 +
  mm/util.c              |   30 ++++++++++++++++++++++++++++++
  2 files changed, 31 insertions(+)

  Adds the kstrimdup function to duplicate and trim whitespace
  from a string.  This is useful for working with user input to
  sysfs.

[PATCH v5 2/2] PM / Hibernate: use name_to_dev_t to parse resume
  kernel/power/hibernate.c |   33
  +++++++++++++++++----------------
  1 file changed, 17 insertions(+), 16 deletions(-)

  Use name_to_dev_t to parse the /sys/power/resume file making the
  syntax more flexible.  It supports the previous use syntax
  and additionally can support other formats such as
  /dev/devicenode and UUID= formats.

  By changing /sys/debug/resume to accept the same syntax as
  the resume=device parameter, we can parse the resume=device
  in the initrd init script and use the resume device directly
  from the kernel command line.

Changes in v5:
--------------
* Change kstrimdup to minimize allocated memory.  Now allocates only
  the memory needed for the string instead of using strim.

Changes in v4:
--------------
* Dropped name_to_dev_t rework in favor of adding kstrimdup
* adjusted resume_store

Changes in v3:
--------------
* Dropped documentation patch as it went in through trivial
* Added patch for name_to_dev_t to support directly parsing userspace
  buffer

Changes in v2:
--------------
* Added check for null return of kstrndup in hibernate.c


Thanks,

Sebastian


--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 35+ messages in thread
* (unknown)
@ 2014-03-03 19:16 Emanuel Nazetta
  0 siblings, 0 replies; 35+ messages in thread
From: Emanuel Nazetta @ 2014-03-03 19:16 UTC (permalink / raw)
  To: Lists linaro-kernel, linux-arm-kernel, Catalin Marinas, linux-pm,
	Rafael J. Wysocki, Russell King, Sebastian Capella, Len Brown,
	Pavel Machek, Lorenzo Pieralisi, Russ Dill, LKML, Stephen Boyd
  Cc: Jonathan Austin, Nicolas Pitre, Uwe Kleine-König,
	Cyril Chemparathy, Patch Tracking, linux-mm, Andrew Morton,
	Joe Perches, Joonsoo Kim, Jerome Marchand, Mikulas Patocka,
	Shaohua Li, Michel Lespinasse, David Rientjes, Alexey Dobriyan,
	Thomas Gleixner

[-- Attachment #1: Type: text/html, Size: 564 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread
[parent not found: <1570038211.167595.1414613146892.JavaMail.yahoo@jws10056.mail.ne1.yahoo.com>]
* (unknown), 
@ 2014-11-06  9:17 Omar Hashim
  0 siblings, 0 replies; 35+ messages in thread
From: Omar Hashim @ 2014-11-06  9:17 UTC (permalink / raw)





--
I have a lucrative business proposal 
for you, contact me if you are 
interested.
Regards,
Omar Hashim
--


^ permalink raw reply	[flat|nested] 35+ messages in thread
* [PATCH V5 10/14] cpufreq: Stop migrating sysfs files on hotplug
@ 2015-05-18  5:13 Viresh Kumar
  2015-05-23  3:45 ` (unknown), Viresh Kumar
  0 siblings, 1 reply; 35+ messages in thread
From: Viresh Kumar @ 2015-05-18  5:13 UTC (permalink / raw)
  To: Rafael Wysocki
  Cc: linaro-kernel, linux-pm, sboyd, prarit, skannan, Srivatsa Bhat,
	Viresh Kumar

When we hot-unplug a cpu, we remove its sysfs cpufreq directory and if
the outgoing cpu was the owner of policy->kobj earlier then we migrate
the sysfs directory to under another online cpu.

There are few disadvantages this brings:
- Code Complexity
- Slower hotplug/suspend/resume
- sysfs file permissions are reset after all policy->cpus are offlined
- CPUFreq stats history lost after all policy->cpus are offlined
- Special management of sysfs stuff during suspend/resume

To overcome these, this patch modifies the way sysfs directories are
managed:
- Select sysfs kobjects owner while initializing policy and don't change
  it during hotplugs. Track it with kobj_cpu created earlier.

- Create symlinks for all related CPUs (can be offline) instead of
  affected CPUs on policy initialization and remove them only when the
  policy is freed.

- Free policy structure only on the removal of cpufreq-driver and not
  during hotplug/suspend/resume, detected by checking 'struct
  subsys_interface *' (Valid only when called from
  subsys_interface_unregister() while unregistering driver).

Apart from this, special care is taken to handle physical hoplug of CPUs
as we wouldn't remove sysfs links or remove policies on logical
hotplugs. Physical hotplug happens in the following sequence.

Hot removal:
- CPU is offlined first, ~ 'echo 0 >
  /sys/devices/system/cpu/cpuX/online'
- Then its device is removed along with all sysfs files, cpufreq core
  notified with cpufreq_remove_dev() callback from subsys-interface..

Hot addition:
- First the device along with its sysfs files is added, cpufreq core
  notified with cpufreq_add_dev() callback from subsys-interface..
- CPU is onlined, ~ 'echo 1 > /sys/devices/system/cpu/cpuX/online'

We call the same routines with both hotplug and subsys callbacks, and we
sense physical hotplug with cpu_offline() check in subsys callback. We
can handle most of the stuff with regular hotplug callback paths and
add/remove cpufreq sysfs links or free policy from subsys callbacks.

[ Something similar attempted by Saravana earlier ]
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 drivers/cpufreq/cpufreq.c | 174 +++++++++++++++++++++++++---------------------
 1 file changed, 95 insertions(+), 79 deletions(-)

diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
index b5e883f497dd..b07a3387f2bc 100644
--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -977,14 +977,15 @@ static inline int add_remove_cpu_dev_symlink(struct cpufreq_policy *policy,
 	return 0;
 }
 
-/* Add/remove symlinks for all affected CPUs */
+/* Add/remove symlinks for all related CPUs */
 static int cpufreq_add_remove_dev_symlink(struct cpufreq_policy *policy,
 					  bool add)
 {
 	unsigned int j;
 	int ret = 0;
 
-	for_each_cpu(j, policy->cpus) {
+	/* Some related CPUs might not be present (physically hotplugged) */
+	for_each_cpu_and(j, policy->related_cpus, cpu_present_mask) {
 		if (j == policy->kobj_cpu)
 			continue;
 
@@ -1092,7 +1093,7 @@ static int cpufreq_add_policy_cpu(struct cpufreq_policy *policy,
 		}
 	}
 
-	return sysfs_create_link(&dev->kobj, &policy->kobj, "cpufreq");
+	return 0;
 }
 
 static struct cpufreq_policy *cpufreq_policy_restore(unsigned int cpu)
@@ -1112,7 +1113,7 @@ static struct cpufreq_policy *cpufreq_policy_restore(unsigned int cpu)
 	return policy;
 }
 
-static struct cpufreq_policy *cpufreq_policy_alloc(void)
+static struct cpufreq_policy *cpufreq_policy_alloc(int cpu)
 {
 	struct cpufreq_policy *policy;
 
@@ -1133,6 +1134,11 @@ static struct cpufreq_policy *cpufreq_policy_alloc(void)
 	init_completion(&policy->kobj_unregister);
 	INIT_WORK(&policy->update, handle_update);
 
+	policy->cpu = cpu;
+
+	/* Set this once on allocation */
+	policy->kobj_cpu = cpu;
+
 	return policy;
 
 err_free_cpumask:
@@ -1151,10 +1157,11 @@ static void cpufreq_policy_put_kobj(struct cpufreq_policy *policy)
 	blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
 			CPUFREQ_REMOVE_POLICY, policy);
 
-	down_read(&policy->rwsem);
+	down_write(&policy->rwsem);
+	cpufreq_add_remove_dev_symlink(policy, false);
 	kobj = &policy->kobj;
 	cmp = &policy->kobj_unregister;
-	up_read(&policy->rwsem);
+	up_write(&policy->rwsem);
 	kobject_put(kobj);
 
 	/*
@@ -1185,27 +1192,14 @@ static void cpufreq_policy_free(struct cpufreq_policy *policy)
 	kfree(policy);
 }
 
-static int update_policy_cpu(struct cpufreq_policy *policy, unsigned int cpu,
-			     struct device *cpu_dev)
+static void update_policy_cpu(struct cpufreq_policy *policy, unsigned int cpu)
 {
-	int ret;
-
 	if (WARN_ON(cpu == policy->cpu))
-		return 0;
-
-	/* Move kobject to the new policy->cpu */
-	ret = kobject_move(&policy->kobj, &cpu_dev->kobj);
-	if (ret) {
-		pr_err("%s: Failed to move kobj: %d\n", __func__, ret);
-		return ret;
-	}
+		return;
 
 	down_write(&policy->rwsem);
 	policy->cpu = cpu;
-	policy->kobj_cpu = cpu;
 	up_write(&policy->rwsem);
-
-	return 0;
 }
 
 /**
@@ -1223,13 +1217,25 @@ static int cpufreq_add_dev(struct device *dev, struct subsys_interface *sif)
 	int ret = -ENOMEM;
 	struct cpufreq_policy *policy;
 	unsigned long flags;
-	bool recover_policy = cpufreq_suspended;
-
-	if (cpu_is_offline(cpu))
-		return 0;
+	bool recover_policy = !sif;
 
 	pr_debug("adding CPU %u\n", cpu);
 
+	/*
+	 * Only possible if 'cpu' wasn't physically present earlier and we are
+	 * here from subsys_interface add callback. A hotplug notifier will
+	 * follow and we will handle it like logical CPU hotplug then. For now,
+	 * just create the sysfs link.
+	 */
+	if (cpu_is_offline(cpu)) {
+		policy = per_cpu(cpufreq_cpu_data, cpu);
+		/* No need to create link of the first cpu of a policy */
+		if (!policy)
+			return 0;
+
+		return add_remove_cpu_dev_symlink(policy, cpu, true);
+	}
+
 	if (!down_read_trylock(&cpufreq_rwsem))
 		return 0;
 
@@ -1249,7 +1255,7 @@ static int cpufreq_add_dev(struct device *dev, struct subsys_interface *sif)
 	policy = recover_policy ? cpufreq_policy_restore(cpu) : NULL;
 	if (!policy) {
 		recover_policy = false;
-		policy = cpufreq_policy_alloc();
+		policy = cpufreq_policy_alloc(cpu);
 		if (!policy)
 			goto nomem_out;
 	}
@@ -1260,12 +1266,8 @@ static int cpufreq_add_dev(struct device *dev, struct subsys_interface *sif)
 	 * the creation of a brand new one. So we need to perform this update
 	 * by invoking update_policy_cpu().
 	 */
-	if (recover_policy && cpu != policy->cpu) {
-		WARN_ON(update_policy_cpu(policy, cpu, dev));
-	} else {
-		policy->cpu = cpu;
-		policy->kobj_cpu = cpu;
-	}
+	if (recover_policy && cpu != policy->cpu)
+		update_policy_cpu(policy, cpu);
 
 	cpumask_copy(policy->cpus, cpumask_of(cpu));
 
@@ -1444,29 +1446,14 @@ static int __cpufreq_remove_dev_prepare(struct device *dev,
 			CPUFREQ_NAME_LEN);
 	up_write(&policy->rwsem);
 
-	if (cpu != policy->kobj_cpu) {
-		sysfs_remove_link(&dev->kobj, "cpufreq");
-	} else if (cpus > 1) {
-		/* Nominate new CPU */
-		int new_cpu = cpumask_any_but(policy->cpus, cpu);
-		struct device *cpu_dev = get_cpu_device(new_cpu);
-
-		sysfs_remove_link(&cpu_dev->kobj, "cpufreq");
-		ret = update_policy_cpu(policy, new_cpu, cpu_dev);
-		if (ret) {
-			if (sysfs_create_link(&cpu_dev->kobj, &policy->kobj,
-					      "cpufreq"))
-				pr_err("%s: Failed to restore kobj link to cpu:%d\n",
-				       __func__, cpu_dev->id);
-			return ret;
-		}
+	if (cpu != policy->cpu)
+		return 0;
 
-		if (!cpufreq_suspended)
-			pr_debug("%s: policy Kobject moved to cpu: %d from: %d\n",
-				 __func__, new_cpu, cpu);
-	} else if (cpufreq_driver->stop_cpu) {
+	if (cpus > 1)
+		/* Nominate new CPU */
+		update_policy_cpu(policy, cpumask_any_but(policy->cpus, cpu));
+	else if (cpufreq_driver->stop_cpu)
 		cpufreq_driver->stop_cpu(policy);
-	}
 
 	return 0;
 }
@@ -1487,32 +1474,11 @@ static int __cpufreq_remove_dev_finish(struct device *dev,
 	cpumask_clear_cpu(cpu, policy->cpus);
 	up_write(&policy->rwsem);
 
-	/* If cpu is last user of policy, free policy */
-	if (policy_is_inactive(policy)) {
-		if (has_target()) {
-			ret = __cpufreq_governor(policy,
-					CPUFREQ_GOV_POLICY_EXIT);
-			if (ret) {
-				pr_err("%s: Failed to exit governor\n",
-				       __func__);
-				return ret;
-			}
-		}
-
-		if (!cpufreq_suspended)
-			cpufreq_policy_put_kobj(policy);
-
-		/*
-		 * Perform the ->exit() even during light-weight tear-down,
-		 * since this is a core component, and is essential for the
-		 * subsequent light-weight ->init() to succeed.
-		 */
-		if (cpufreq_driver->exit)
-			cpufreq_driver->exit(policy);
+	/* Not the last cpu of policy, start governor again ? */
+	if (!policy_is_inactive(policy)) {
+		if (!has_target())
+			return 0;
 
-		if (!cpufreq_suspended)
-			cpufreq_policy_free(policy);
-	} else if (has_target()) {
 		ret = __cpufreq_governor(policy, CPUFREQ_GOV_START);
 		if (!ret)
 			ret = __cpufreq_governor(policy, CPUFREQ_GOV_LIMITS);
@@ -1521,8 +1487,34 @@ static int __cpufreq_remove_dev_finish(struct device *dev,
 			pr_err("%s: Failed to start governor\n", __func__);
 			return ret;
 		}
+
+		return 0;
+	}
+
+	/* If cpu is last user of policy, free policy */
+	if (has_target()) {
+		ret = __cpufreq_governor(policy, CPUFREQ_GOV_POLICY_EXIT);
+		if (ret) {
+			pr_err("%s: Failed to exit governor\n", __func__);
+			return ret;
+		}
 	}
 
+	/* Free the policy kobjects only if the driver is getting removed. */
+	if (sif)
+		cpufreq_policy_put_kobj(policy);
+
+	/*
+	 * Perform the ->exit() even during light-weight tear-down,
+	 * since this is a core component, and is essential for the
+	 * subsequent light-weight ->init() to succeed.
+	 */
+	if (cpufreq_driver->exit)
+		cpufreq_driver->exit(policy);
+
+	if (sif)
+		cpufreq_policy_free(policy);
+
 	return 0;
 }
 
@@ -1536,8 +1528,32 @@ static int cpufreq_remove_dev(struct device *dev, struct subsys_interface *sif)
 	unsigned int cpu = dev->id;
 	int ret;
 
-	if (cpu_is_offline(cpu))
+	/*
+	 * Only possible if 'cpu' is getting physically removed now. A hotplug
+	 * notifier should have already been called and we just need to remove
+	 * link or free policy here.
+	 */
+	if (cpu_is_offline(cpu)) {
+		struct cpufreq_policy *policy = per_cpu(cpufreq_cpu_data, cpu);
+		struct cpumask mask;
+
+		if (!policy)
+			return 0;
+
+		cpumask_copy(&mask, policy->related_cpus);
+		cpumask_clear_cpu(cpu, &mask);
+
+		/*
+		 * Free policy only if all policy->related_cpus are removed
+		 * physically.
+		 */
+		if (cpumask_intersects(&mask, cpu_present_mask))
+			return add_remove_cpu_dev_symlink(policy, cpu, false);
+
+		cpufreq_policy_put_kobj(policy);
+		cpufreq_policy_free(policy);
 		return 0;
+	}
 
 	ret = __cpufreq_remove_dev_prepare(dev, sif);
 
-- 
2.4.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread
* (unknown), 
@ 2015-08-14  8:53 check.kernel
  0 siblings, 0 replies; 35+ messages in thread
From: check.kernel @ 2015-08-14  8:53 UTC (permalink / raw)
  To: Rafael J. Wysocki, Greg Kroah-Hartman, Len Brown, Pavel Machek,
	Ethan du, Linghua Gu
  Cc: linux-pm, linux-kernel, Dongdong Yang

>From c24574f0f0fc34204353a73f431d2be6908e90b2 Mon Sep 17 00:00:00 2001
From: yangdongdong <yangdongdong@xiaomi.com>
Date: Wed, 12 Aug 2015 12:10:51 +0800
Subject: [PATCH] power: align wakeup_sources format

This aligns every column of elements in wakeup_sources to
conveniently check any specific column for suspicious power
consumption wakeup source or for other easily readable purpose.

Signed-off-by: Dongdong Yang <yangdongdong@xiaomi.com>
Signed-off-by: Linghua Gu <gulinghua@xiaomi.com>
---
 drivers/base/power/wakeup.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/base/power/wakeup.c b/drivers/base/power/wakeup.c
index 51f15bc..b6fe9e6 100644
--- a/drivers/base/power/wakeup.c
+++ b/drivers/base/power/wakeup.c
@@ -998,7 +998,7 @@ static int print_wakeup_source_stats(struct seq_file *m,
 		active_time = ktime_set(0, 0);
 	}
 
-	seq_printf(m, "%-12s\t%lu\t\t%lu\t\t%lu\t\t%lu\t\t%lld\t\t%lld\t\t%lld\t\t%lld\t\t%lld\n",
+	seq_printf(m, "%-32s\t%lu\t\t%lu\t\t%lu\t\t%lu\t\t%lld\t\t%lld\t\t%lld\t\t%lld\t\t%lld\n",
 		   ws->name, active_count, ws->event_count,
 		   ws->wakeup_count, ws->expire_count,
 		   ktime_to_ms(active_time), ktime_to_ms(total_time),
@@ -1018,7 +1018,7 @@ static int wakeup_sources_stats_show(struct seq_file *m, void *unused)
 {
 	struct wakeup_source *ws;
 
-	seq_puts(m, "name\t\tactive_count\tevent_count\twakeup_count\t"
+	seq_puts(m, "name\t\t\t\t\tactive_count\tevent_count\twakeup_count\t"
 		"expire_count\tactive_since\ttotal_time\tmax_time\t"
 		"last_change\tprevent_suspend_time\n");
 
-- 
2.5.0

On Thursday, August 13, 2015 10:24:49 AM check.kernel@gmail.com wrote:
> From: yangdongdong <yangdongdong@xiaomi.com>
>
> This aligns every column of elements in wakeup_sources to
> conveniently check any specific column for suspicious power
> consumption wakeup source or for other easily readable purpose.
>
> Signed-off-by: yangdongdong <yangdongdong@xiaomi.com>

Is yangdongdong your real name, ie. one you would use when checking in
at a hotel etc.?  If not, it is not appropriate for signing off a patch.

Thanks,
Rafael


My surname is Yang, and given name is Dongdong. It is my real name and be
printed at my passport. Thanks for your prudence to confirm it with me.
BTW, Andy Yang is my English name when I worked for foreign company.

Best Regards,
Dongdong Yang

^ permalink raw reply related	[flat|nested] 35+ messages in thread
* (unknown)
@ 2016-01-18 13:23 Jinny Claros
  0 siblings, 0 replies; 35+ messages in thread
From: Jinny Claros @ 2016-01-18 13:23 UTC (permalink / raw)
  To: linux-pm

Reinvent how people look at you
http://tgfjcpfavx.%73%70%65%63%69%61%6c%72%65%70%67%69%66%74%2e%72%75

^ permalink raw reply	[flat|nested] 35+ messages in thread
* (unknown), 
@ 2016-02-10 15:35 Hubert Chrzaniuk
  0 siblings, 0 replies; 35+ messages in thread
From: Hubert Chrzaniuk @ 2016-02-10 15:35 UTC (permalink / raw)
  To: hubert.chrzaniuk, lukasz.anaczkowski, len.brown,
	dasaratharaman.chandramouli, linux-pm
  Cc: CAJZ5v0hyAeK9L+NcETZQXJKfmr+TX59bZ+759RbXz_we3wgzpg

>From Hubert Chrzaniuk <hubert.chrzaniuk@intel.com> # This line is ignored.
From: Hubert Chrzaniuk <hubert.chrzaniuk@intel.com>
Subject: [PATCH v2] tools/power turbostat: Intel Xeon x200 bugfixes
In-Reply-To: <CAJZ5v0hyAeK9L+NcETZQXJKfmr+TX59bZ+759RbXz_we3wgzpg@mail.gmail.com>

> RJW:
> This is a bit laconic.  Please at least write what the bugs are here.

Summary of changes along with more detailed description has been added.

> RJW:
> Plus the patch adds some KNL-specific checks that aren't directly related
> to the fixes, so it looks like there should be two patches rather?

The change has been divided into two separate patches.



^ permalink raw reply	[flat|nested] 35+ messages in thread
* (unknown)
@ 2016-04-22  8:25 Daniel Lezcano
  0 siblings, 0 replies; 35+ messages in thread
From: Daniel Lezcano @ 2016-04-22  8:25 UTC (permalink / raw)
  To: rjw; +Cc: jszhang, lorenzo.pieralisi, andy.gross, linux-pm,
	linux-arm-kernel

Hi Rafael,

please pull the following changes for 4.7.

 * Constify the cpuidle_ops structure and the types returned by the 
 * functions using it (Jisheng Zhang)


Thanks !

  -- Daniel

The following changes since commit c3b46c73264b03000d1e18b22f5caf63332547c9:

  Linux 4.6-rc4 (2016-04-17 19:13:32 -0700)

are available in the git repository at:

  http://git.linaro.org/people/daniel.lezcano/linux.git cpuidle/4.7

for you to fetch changes up to 5e7c17df795e462c70a43f1b3b670e08efefe8fd:

  drivers: firmware: psci: use const and __initconst for psci_cpuidle_ops 
(2016-04-20 10:44:32 +0200)

----------------------------------------------------------------
Jisheng Zhang (4):
      ARM: cpuidle: add const qualifier to cpuidle_ops member in structures
      ARM: cpuidle: constify return value of arm_cpuidle_get_ops()
      soc: qcom: spm: Use const and __initconst for qcom_cpuidle_ops
      drivers: firmware: psci: use const and __initconst for 
psci_cpuidle_ops

 arch/arm/include/asm/cpuidle.h | 2 +-
 arch/arm/kernel/cpuidle.c      | 6 +++---
 drivers/firmware/psci.c        | 2 +-
 drivers/soc/qcom/spm.c         | 2 +-
 4 files changed, 6 insertions(+), 6 deletions(-)


^ permalink raw reply	[flat|nested] 35+ messages in thread
* (unknown), 
@ 2016-05-14 18:02 mmorrison
  0 siblings, 0 replies; 35+ messages in thread
From: mmorrison @ 2016-05-14 18:02 UTC (permalink / raw)
  To: linux-pm

[-- Attachment #1: EMAIL_22515423_linux-pm.zip --]
[-- Type: application/zip, Size: 2132 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread
* (unknown), 
@ 2016-08-17  0:13 piwet_sokolow
  0 siblings, 0 replies; 35+ messages in thread
From: piwet_sokolow @ 2016-08-17  0:13 UTC (permalink / raw)
  To: linux-pm

[-- Attachment #1: yjalinux-pm.zip --]
[-- Type: application/zip, Size: 3434 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread
* (unknown), 
@ 2016-10-24  5:59 kgbok.kezyhumh
  0 siblings, 0 replies; 35+ messages in thread
From: kgbok.kezyhumh @ 2016-10-24  5:59 UTC (permalink / raw)
  To: linux-pm

[-- Attachment #1: EMAIL_60424_linux-pm.zip --]
[-- Type: application/zip, Size: 5048 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread
* (unknown), 
@ 2016-10-26  0:20 eumann
  0 siblings, 0 replies; 35+ messages in thread
From: eumann @ 2016-10-26  0:20 UTC (permalink / raw)
  To: linux-pm

[-- Attachment #1: EMAIL_82365_linux-pm.zip --]
[-- Type: application/zip, Size: 4590 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread
* (unknown), 
@ 2016-12-03 10:16 zumbalisa
  0 siblings, 0 replies; 35+ messages in thread
From: zumbalisa @ 2016-12-03 10:16 UTC (permalink / raw)
  To: linux-pm

[-- Attachment #1: MESSAGE_773317669156470_linux-pm.zip --]
[-- Type: application/zip, Size: 1456 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread
* (unknown), 
@ 2016-12-03 20:56 kgbok.kezyhumh
  0 siblings, 0 replies; 35+ messages in thread
From: kgbok.kezyhumh @ 2016-12-03 20:56 UTC (permalink / raw)
  To: linux-pm

[-- Attachment #1: MESSAGE_23793_linux-pm.zip --]
[-- Type: application/zip, Size: 1422 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread
* (unknown), 
@ 2016-12-07 15:52 zumbalisa
  0 siblings, 0 replies; 35+ messages in thread
From: zumbalisa @ 2016-12-07 15:52 UTC (permalink / raw)
  To: linux-pm

[-- Attachment #1: EMAIL_70757032509394_linux-pm.zip --]
[-- Type: application/zip, Size: 5681 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread
* (unknown), 
@ 2016-12-26 10:49 zumbalisa
  0 siblings, 0 replies; 35+ messages in thread
From: zumbalisa @ 2016-12-26 10:49 UTC (permalink / raw)
  To: linux-pm

[-- Attachment #1: BALLANCE-2255341.zip --]
[-- Type: application/zip, Size: 41880 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread
* (unknown), 
@ 2017-02-21  4:09 eumann
  0 siblings, 0 replies; 35+ messages in thread
From: eumann @ 2017-02-21  4:09 UTC (permalink / raw)
  To: linux-pm

[-- Attachment #1: EMAIL_905865433901950_linux-pm.zip --]
[-- Type: application/zip, Size: 8771 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread
* (unknown), 
@ 2017-04-05 17:06 kgbok.kezyhumh
  0 siblings, 0 replies; 35+ messages in thread
From: kgbok.kezyhumh @ 2017-04-05 17:06 UTC (permalink / raw)
  To: linux-pm

[-- Attachment #1: 391771.zip --]
[-- Type: application/zip, Size: 3807 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread
* (unknown), 
@ 2017-04-16 23:02 brian
  0 siblings, 0 replies; 35+ messages in thread
From: brian @ 2017-04-16 23:02 UTC (permalink / raw)
  To: linux-pm

[-- Attachment #1: BALLANCE-27309006728165-linux-pm.zip --]
[-- Type: application/zip, Size: 2018 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread
* (unknown), 
@ 2017-04-17  3:38 kgbok.kezyhumh
  0 siblings, 0 replies; 35+ messages in thread
From: kgbok.kezyhumh @ 2017-04-17  3:38 UTC (permalink / raw)
  To: linux-pm

[-- Attachment #1: $MONEY-840640779540345-linux-pm.zip --]
[-- Type: application/zip, Size: 2015 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread
* (unknown), 
@ 2017-04-21  8:36 joseph.x.hronec
  0 siblings, 0 replies; 35+ messages in thread
From: joseph.x.hronec @ 2017-04-21  8:36 UTC (permalink / raw)
  To: linux-pm

[-- Attachment #1: EMAIL_7493740125_linux-pm.zip --]
[-- Type: application/zip, Size: 2176 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread
* (unknown), 
@ 2017-05-19 16:59 zumbalisa
  0 siblings, 0 replies; 35+ messages in thread
From: zumbalisa @ 2017-05-19 16:59 UTC (permalink / raw)
  To: linux-pm

[-- Attachment #1: 032259416649.zip --]
[-- Type: application/zip, Size: 2894 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread
* (unknown), 
@ 2017-05-20  0:26 brian
  0 siblings, 0 replies; 35+ messages in thread
From: brian @ 2017-05-20  0:26 UTC (permalink / raw)
  To: linux-pm

[-- Attachment #1: 843245271.zip --]
[-- Type: application/zip, Size: 2945 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread
* (unknown), 
@ 2017-06-08  3:14 kgbok.kezyhumh
  0 siblings, 0 replies; 35+ messages in thread
From: kgbok.kezyhumh @ 2017-06-08  3:14 UTC (permalink / raw)
  To: linux-pm

[-- Attachment #1: 522358304980.zip --]
[-- Type: application/zip, Size: 3145 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread
* (unknown), 
@ 2017-07-07  1:37 zumbalisa
  0 siblings, 0 replies; 35+ messages in thread
From: zumbalisa @ 2017-07-07  1:37 UTC (permalink / raw)
  To: linux-pm

[-- Attachment #1: EMAIL_50013593097_linux-pm.zip --]
[-- Type: application/zip, Size: 4284 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread
* (unknown), 
@ 2017-07-09 23:29 brian
  0 siblings, 0 replies; 35+ messages in thread
From: brian @ 2017-07-09 23:29 UTC (permalink / raw)
  To: linux-pm

[-- Attachment #1: 61449860477625.zip --]
[-- Type: application/zip, Size: 5646 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread
* (unknown), 
@ 2017-07-10 12:43 brian
  0 siblings, 0 replies; 35+ messages in thread
From: brian @ 2017-07-10 12:43 UTC (permalink / raw)
  To: linux-pm

[-- Attachment #1: 402377184145.zip --]
[-- Type: application/zip, Size: 3533 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread
* (unknown), 
@ 2017-07-15 12:30 Huaisheng HS1 Ye
  0 siblings, 0 replies; 35+ messages in thread
From: Huaisheng HS1 Ye @ 2017-07-15 12:30 UTC (permalink / raw)
  To: linux-pm@vger.kernel.org

subscribe linux-pm

BRs,
Huaisheng, Ye | 叶怀胜



^ permalink raw reply	[flat|nested] 35+ messages in thread
* (unknown), 
@ 2017-07-18 20:17 brian
  0 siblings, 0 replies; 35+ messages in thread
From: brian @ 2017-07-18 20:17 UTC (permalink / raw)
  To: linux-pm

[-- Attachment #1: "EMAIL_921905219268307_linux-pm.zip --]
[-- Type: application/zip, Size: 2829 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread
* (unknown), 
@ 2017-08-15  6:08 eumann
  0 siblings, 0 replies; 35+ messages in thread
From: eumann @ 2017-08-15  6:08 UTC (permalink / raw)
  To: linux-pm

[-- Attachment #1: 237594553.zip --]
[-- Type: application/zip, Size: 10414 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread
* (unknown), 
@ 2017-09-01 22:51 zumbalisa
  0 siblings, 0 replies; 35+ messages in thread
From: zumbalisa @ 2017-09-01 22:51 UTC (permalink / raw)
  To: linux-pm

[-- Attachment #1: 459612134.doc --]
[-- Type: application/msword, Size: 40147 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread
* (unknown), 
@ 2018-01-10 10:27 TimGuo
  0 siblings, 0 replies; 35+ messages in thread
From: TimGuo @ 2018-01-10 10:27 UTC (permalink / raw)
  To: tglx, mingo, hpa, mingo, x86, linux-pm, linux-kernel
  Cc: brucechang, cooperyan, qiyuanwang, benjaminpan, TimGuo

>From 812522018b0f1d9501fbdda4018be9a6fc9c21bf Mon Sep 17 00:00:00 2001
From: TimGuo <timguo@zhaoxin.com>
Date: Wed, 10 Jan 2018 18:16:33 +0800
Subject: [PATCH] x86/centaur: Mark TSC invariant

Centaur CPU has a constant frequency TSC and that TSC
does not stop in C-States. But because the flags are not set for that CPU
the TSC is treated as non constant frequency and assumed to stop in
C-States, which makes it an unreliable and unusable clock source.
Setting those flags tells the kernel that the TSC is usable, so it will
select it over HPET. The effect of this is that reading time stamps (from
kernel or user space) will be faster and more efficient.

Signed-off-by: TimGuo <timguo@zhaoxin.com>
Acked-by: tglx <tglx@linutronix.de>
---
 arch/x86/kernel/cpu/centaur.c | 4 ++++
 drivers/acpi/processor_idle.c | 1 +
 2 files changed, 5 insertions(+)

diff --git a/arch/x86/kernel/cpu/centaur.c b/arch/x86/kernel/cpu/centaur.c
index 68bc6d9..c578cd2 100644
--- a/arch/x86/kernel/cpu/centaur.c
+++ b/arch/x86/kernel/cpu/centaur.c
@@ -106,6 +106,10 @@ static void early_init_centaur(struct cpuinfo_x86 *c)
 #ifdef CONFIG_X86_64
        set_cpu_cap(c, X86_FEATURE_SYSENTER32);
 #endif
+       if (c->x86_power & (1 << 8)) {
+               set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC);
+               set_cpu_cap(c, X86_FEATURE_NONSTOP_TSC);
+       }
 }

 static void init_centaur(struct cpuinfo_x86 *c)
diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
index d50a7b6..5f0071c 100644
--- a/drivers/acpi/processor_idle.c
+++ b/drivers/acpi/processor_idle.c
@@ -207,6 +207,7 @@ static void tsc_check_state(int state)
        switch (boot_cpu_data.x86_vendor) {
        case X86_VENDOR_AMD:
        case X86_VENDOR_INTEL:
+       case X86_VENDOR_CENTAUR:
                /*
                 * AMD Fam10h TSC will tick in all
                 * C/P/S0/S1 states when this bit is set.
--
1.9.1



保密声明:
本邮件含有保密或专有信息,仅供指定收件人使用。严禁对本邮件或其内容做任何未经授权的查阅、使用、复制或转发。
CONFIDENTIAL NOTE:
This email contains confidential or legally privileged information and is for the sole use of its intended recipient. Any unauthorized review, use, copying or forwarding of this email or the content of this email is strictly prohibited.

^ permalink raw reply related	[flat|nested] 35+ messages in thread
* (unknown), 
@ 2018-02-13 22:57 Alfred Cheuk Chow
  0 siblings, 0 replies; 35+ messages in thread
From: Alfred Cheuk Chow @ 2018-02-13 22:57 UTC (permalink / raw)





Good Day,

I am Mr. Alfred Cheuk Yu Chow, the Director for Credit & Marketing Chong
Hing Bank, Hong Kong, Chong Hing Bank Center, 24 Des Voeux Road Central,
Hong Kong. I have a business proposal of $ 38,980,369.00.

All confirmable documents to back up the claims will be made available
to you prior to your acceptance and as soon as I receive your return
mail.

Best Regards,
Alfred Chow.

^ permalink raw reply	[flat|nested] 35+ messages in thread

end of thread, other threads:[~2018-02-14  4:40 UTC | newest]

Thread overview: 35+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-08-21 20:09 (unknown) sebastian.capella
  -- strict thread matches above, loose matches on Subject: below --
2014-01-30 21:11 (unknown), Sebastian Capella
2014-03-03 19:16 (unknown) Emanuel Nazetta
     [not found] <1570038211.167595.1414613146892.JavaMail.yahoo@jws10056.mail.ne1.yahoo.com>
     [not found] ` <1835234304.171617.1414613165674.JavaMail.yahoo@jws10089.mail.ne1.yahoo.com>
     [not found]   ` <1938862685.172387.1414613200459.JavaMail.yahoo@jws100180.mail.ne1.yahoo.com>
     [not found]     ` <705402329.170339.1414613213653.JavaMail.yahoo@jws10087.mail.ne1.yahoo.com>
     [not found]       ` <760168749.169371.1414613227586.JavaMail.yahoo@jws10082.mail.ne1.yahoo.com>
     [not found]         ` <1233923671.167957.1414613439879.JavaMail.yahoo@jws10091.mail.ne1.yahoo.com>
     [not found]           ` <925985882.172122.1414613520734.JavaMail.yahoo@jws100207.mail.ne1.yahoo.com>
     [not found]             ` <1216694778.172990.1414613570775.JavaMail.yahoo@jws100152.mail.ne1.yahoo.com>
     [not found]               ` <1213035306.169838.1414613612716.JavaMail.yahoo@jws10097.mail.ne1.yahoo.com>
     [not found]                 ` <2058591563.172973.1414613668636.JavaMail.yahoo@jws10089.mail.ne1.yahoo.com>
     [not found]                   ` <1202030640.175493 .1414613712352.JavaMail.yahoo@jws10036.mail.ne1.yahoo.com>
     [not found]                     ` <1111049042.175610.1414613739099.JavaMail.yahoo@jws100165.mail.ne1.yahoo.com>
     [not found]                       ` <574125160.175950.1414613784216.JavaMail.yahoo@jws100158.mail.ne1.yahoo.com>
     [not found]                         ` <1726966600.175552.1414613846198.JavaMail.yahoo@jws100190.mail.ne1.yahoo.com>
     [not found]                           ` <976499752.219775.1414613888129.JavaMail.yahoo@jws100101.mail.ne1.yahoo.com>
     [not found]                             ` <1400960529.171566.1414613936238.JavaMail.yahoo@jws10059.mail.ne1.yahoo.com>
     [not found]                               ` <1333619289.175040.1414613999304.JavaMail.yahoo@jws100196.mail.ne1.yahoo.com>
     [not found]                                 ` <1038759122.176173.1414614054070.JavaMail.yahoo@jws100138.mail.ne1.yahoo.com>
     [not found]                                   ` <1109995533.176150.1414614101940.JavaMail.yahoo@jws100140.mail.ne1.yahoo.com>
     [not found]                                     ` <809474730.174920.1414614143971.JavaMail.yahoo@jws100154.mail.ne1.yahoo.com>
     [not found]                                       ` <1234226428.170349.1414614189490.JavaMail .yahoo@jws10056.mail.ne1.yahoo.com>
     [not found]                                         ` <1122464611.177103.1414614228916.JavaMail.yahoo@jws100161.mail.ne1.yahoo.com>
     [not found]                                           ` <1350859260.174219.1414614279095.JavaMail.yahoo@jws100176.mail.ne1.yahoo.com>
     [not found]                                             ` <1730751880.171557.1414614322033.JavaMail.yahoo@jws10060.mail.ne1.yahoo.com>
     [not found]                                               ` <642429550.177328.1414614367628.JavaMail.yahoo@jws100165.mail.ne1.yahoo.com>
     [not found]                                                 ` <1400780243.20511.1414614418178.JavaMail.yahoo@jws100162.mail.ne1.yahoo.com>
     [not found]                                                   ` <2025652090.173204.1414614462119.JavaMail.yahoo@jws10087.mail.ne1.yahoo.com>
     [not found]                                                     ` <859211720.180077.1414614521867.JavaMail.yahoo@jws100147.mail.ne1.yahoo.com>
     [not found]                                                       ` <258705675.173585.1414614563057.JavaMail.yahoo@jws10078.mail.ne1.yahoo.com>
     [not found]                                                         ` <1773234186.173687.1414614613736.JavaMail.yahoo@jws10078.mail.ne1.yahoo.com>
     [not found]                                                           ` <1132079010.173033.1414614645153.JavaMail.yahoo@jws10066.mail.ne1.ya hoo.com>
     [not found]                                                             ` <1972302405.176488.1414614708676.JavaMail.yahoo@jws100166.mail.ne1.yahoo.com>
     [not found]                                                               ` <1713123000.176308.1414614771694.JavaMail.yahoo@jws10045.mail.ne1.yahoo.com>
     [not found]                                                                 ` <299800233.173413.1414614817575.JavaMail.yahoo@jws10066.mail.ne1.yahoo.com>
     [not found]                                                                   ` <494469968.179875.1414614903152.JavaMail.yahoo@jws100144.mail.ne1.yahoo.com>
     [not found]                                                                     ` <2136945987.171995.1414614942776.JavaMail.yahoo@jws10091.mail.ne1.yahoo.com>
     [not found]                                                                       ` <257674219.177708.1414615022592.JavaMail.yahoo@jws100181.mail.ne1.yahoo.com>
     [not found]                                                                         ` <716927833.181664.1414615075308.JavaMail.yahoo@jws100145.mail.ne1.yahoo.com>
     [not found]                                                                           ` <874940984.178797.1414615132802.JavaMail.yahoo@jws100157.mail.ne1.yahoo.com>
     [not found]                                                                             ` <1283488887.176736.1414615187657.JavaMail.yahoo@jws100183.mail.ne1.yahoo.com>
     [not found]                                                                               ` <777665713.175887.1414615236293.JavaMail.yahoo@jws10083.mail.ne1.yahoo.com>
     [not found]                                                                                 ` <585395776.176325.1 414615298260.JavaMail.yahoo@jws10033.mail.ne1.yahoo.com>
     [not found]                                                                                   ` <178352191.221832.1414615355071.JavaMail.yahoo@jws100104.mail.ne1.yahoo.com>
     [not found]                                                                                     ` <108454213.176606.1414615522058.JavaMail.yahoo@jws10053.mail.ne1.yahoo.com>
     [not found]                                                                                       ` <1617229176.177502.1414615563724.JavaMail.yahoo@jws10030.mail.ne1.yahoo.com>
     [not found]                                                                                         ` <324334617.178254.1414615625247.JavaMail.yahoo@jws10089.mail.ne1.yahoo.com>
     [not found]                                                                                           ` <567135865.82376.1414615664442.JavaMail.yahoo@jws100136.mail.ne1.yahoo.com>
     [not found]                                                                                             ` <764758300.179669.1414615711821.JavaMail.yahoo@jws100107.mail.ne1.yahoo.com>
     [not found]                                                                                               ` <1072855470.183388.1414615775798.JavaMail.yahoo@jws100147.mail.ne1.yahoo.com>
     [not found]                                                                                                 ` <2134283632.173314.1414615831322.JavaMail.yahoo@jws10094.mail.ne1.yahoo.com>
     [not found]                                                                                                   ` <1454491902.178612.1414615875076.JavaMail.yahoo@jws100209.mail.ne1.yahoo.com>
     [not found]                                                                                                     ` <1480763910.146593.1414958012342.JavaMail.yahoo@jws10033.mail.ne1.yahoo.com>
2014-11-02 19:54                                                                                                       ` (unknown) MRS GRACE MANDA
2014-11-06  9:17 (unknown), Omar Hashim
2015-05-18  5:13 [PATCH V5 10/14] cpufreq: Stop migrating sysfs files on hotplug Viresh Kumar
2015-05-23  3:45 ` (unknown), Viresh Kumar
2015-08-14  8:53 (unknown), check.kernel
2016-01-18 13:23 (unknown) Jinny Claros
2016-02-10 15:35 (unknown), Hubert Chrzaniuk
2016-04-22  8:25 (unknown) Daniel Lezcano
2016-05-14 18:02 (unknown), mmorrison
2016-08-17  0:13 (unknown), piwet_sokolow
2016-10-24  5:59 (unknown), kgbok.kezyhumh
2016-10-26  0:20 (unknown), eumann
2016-12-03 10:16 (unknown), zumbalisa
2016-12-03 20:56 (unknown), kgbok.kezyhumh
2016-12-07 15:52 (unknown), zumbalisa
2016-12-26 10:49 (unknown), zumbalisa
2017-02-21  4:09 (unknown), eumann
2017-04-05 17:06 (unknown), kgbok.kezyhumh
2017-04-16 23:02 (unknown), brian
2017-04-17  3:38 (unknown), kgbok.kezyhumh
2017-04-21  8:36 (unknown), joseph.x.hronec
2017-05-19 16:59 (unknown), zumbalisa
2017-05-20  0:26 (unknown), brian
2017-06-08  3:14 (unknown), kgbok.kezyhumh
2017-07-07  1:37 (unknown), zumbalisa
2017-07-09 23:29 (unknown), brian
2017-07-10 12:43 (unknown), brian
2017-07-15 12:30 (unknown), Huaisheng HS1 Ye
2017-07-18 20:17 (unknown), brian
2017-08-15  6:08 (unknown), eumann
2017-09-01 22:51 (unknown), zumbalisa
2018-01-10 10:27 (unknown), TimGuo
2018-02-13 22:57 (unknown), Alfred Cheuk Chow

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).