|
@@ -496,13 +496,34 @@ static DEVICE_ATTR(spurr, 0400, show_spurr, NULL);
|
|
|
static DEVICE_ATTR(purr, 0400, show_purr, store_purr);
|
|
|
static DEVICE_ATTR(pir, 0400, show_pir, NULL);
|
|
|
|
|
|
+/*
|
|
|
+ * This is the system wide DSCR register default value. Any
|
|
|
+ * change to this default value through the sysfs interface
|
|
|
+ * will update all per cpu DSCR default values across the
|
|
|
+ * system stored in their respective PACA structures.
|
|
|
+ */
|
|
|
static unsigned long dscr_default;
|
|
|
|
|
|
+/**
|
|
|
+ * read_dscr() - Fetch the cpu specific DSCR default
|
|
|
+ * @val: Returned cpu specific DSCR default value
|
|
|
+ *
|
|
|
+ * This function returns the per cpu DSCR default value
|
|
|
+ * for any cpu which is contained in it's PACA structure.
|
|
|
+ */
|
|
|
static void read_dscr(void *val)
|
|
|
{
|
|
|
*(unsigned long *)val = get_paca()->dscr_default;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+/**
|
|
|
+ * write_dscr() - Update the cpu specific DSCR default
|
|
|
+ * @val: New cpu specific DSCR default value to update
|
|
|
+ *
|
|
|
+ * This function updates the per cpu DSCR default value
|
|
|
+ * for any cpu which is contained in it's PACA structure.
|
|
|
+ */
|
|
|
static void write_dscr(void *val)
|
|
|
{
|
|
|
get_paca()->dscr_default = *(unsigned long *)val;
|
|
@@ -520,12 +541,29 @@ static void add_write_permission_dev_attr(struct device_attribute *attr)
|
|
|
attr->attr.mode |= 0200;
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * show_dscr_default() - Fetch the system wide DSCR default
|
|
|
+ * @dev: Device structure
|
|
|
+ * @attr: Device attribute structure
|
|
|
+ * @buf: Interface buffer
|
|
|
+ *
|
|
|
+ * This function returns the system wide DSCR default value.
|
|
|
+ */
|
|
|
static ssize_t show_dscr_default(struct device *dev,
|
|
|
struct device_attribute *attr, char *buf)
|
|
|
{
|
|
|
return sprintf(buf, "%lx\n", dscr_default);
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * store_dscr_default() - Update the system wide DSCR default
|
|
|
+ * @dev: Device structure
|
|
|
+ * @attr: Device attribute structure
|
|
|
+ * @buf: Interface buffer
|
|
|
+ * @count: Size of the update
|
|
|
+ *
|
|
|
+ * This function updates the system wide DSCR default value.
|
|
|
+ */
|
|
|
static ssize_t __used store_dscr_default(struct device *dev,
|
|
|
struct device_attribute *attr, const char *buf,
|
|
|
size_t count)
|