All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <20210729232205.GX8018@packtop>

diff --git a/a/1.txt b/N1/1.txt
index bd6a626..e19b964 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -12,13 +12,13 @@ On Thu, Jul 29, 2021 at 04:17:06PM CDT, Winiarska, Iwona wrote:
 >> > Signed-off-by: Iwona Winiarska <iwona.winiarska@intel.com>
 >> > Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
 >> > ---
->> > drivers/peci/Kconfig??? |?? 1 +
->> > drivers/peci/core.c???? |? 49 +++++++++
->> > drivers/peci/device.c?? |? 99 ++++++++++++++++++
->> > drivers/peci/internal.h |? 75 ++++++++++++++
->> > drivers/peci/request.c? | 217 ++++++++++++++++++++++++++++++++++++++++
->> > include/linux/peci.h??? |? 19 ++++
->> > lib/Kconfig???????????? |?? 2 +-
+>> > drivers/peci/Kconfig    |   1 +
+>> > drivers/peci/core.c     |  49 +++++++++
+>> > drivers/peci/device.c   |  99 ++++++++++++++++++
+>> > drivers/peci/internal.h |  75 ++++++++++++++
+>> > drivers/peci/request.c  | 217 ++++++++++++++++++++++++++++++++++++++++
+>> > include/linux/peci.h    |  19 ++++
+>> > lib/Kconfig             |   2 +-
 >> > 7 files changed, 461 insertions(+), 1 deletion(-)
 >> >
 >> > diff --git a/drivers/peci/Kconfig b/drivers/peci/Kconfig
@@ -28,11 +28,11 @@ On Thu, Jul 29, 2021 at 04:17:06PM CDT, Winiarska, Iwona wrote:
 >> > @@ -2,6 +2,7 @@
 >> >
 >> > menuconfig PECI
->> > ????????tristate "PECI support"
->> > +???????select GENERIC_LIB_X86
->> > ????????help
->> > ????????? The Platform Environment Control Interface (PECI) is an interface
->> > ????????? that provides a communication channel to Intel processors and
+>> >         tristate "PECI support"
+>> > +       select GENERIC_LIB_X86
+>> >         help
+>> >           The Platform Environment Control Interface (PECI) is an interface
+>> >           that provides a communication channel to Intel processors and
 >> > diff --git a/drivers/peci/core.c b/drivers/peci/core.c
 >> > index ae7a9572cdf3..94426b7f2618 100644
 >> > --- a/drivers/peci/core.c
@@ -46,57 +46,57 @@ On Thu, Jul 29, 2021 at 04:17:06PM CDT, Winiarska, Iwona wrote:
 >> > +peci_bus_match_device_id(const struct peci_device_id *id, struct
 >> > peci_device *device)
 >> > +{
->> > +???????while (id->family != 0) {
->> > +???????????????if (id->family == device->info.family &&
->> > +?????????????????? id->model == device->info.model)
->> > +???????????????????????return id;
->> > +???????????????id++;
->> > +???????}
->> > +
->> > +???????return NULL;
+>> > +       while (id->family != 0) {
+>> > +               if (id->family == device->info.family &&
+>> > +                   id->model == device->info.model)
+>> > +                       return id;
+>> > +               id++;
+>> > +       }
+>> > +
+>> > +       return NULL;
 >> > +}
 >> > +
 >> > +static int peci_bus_device_match(struct device *dev, struct device_driver
 >> > *drv)
 >> > +{
->> > +???????struct peci_device *device = to_peci_device(dev);
->> > +???????struct peci_driver *peci_drv = to_peci_driver(drv);
+>> > +       struct peci_device *device = to_peci_device(dev);
+>> > +       struct peci_driver *peci_drv = to_peci_driver(drv);
 >> > +
->> > +???????if (dev->type != &peci_device_type)
->> > +???????????????return 0;
+>> > +       if (dev->type != &peci_device_type)
+>> > +               return 0;
 >> > +
->> > +???????if (peci_bus_match_device_id(peci_drv->id_table, device))
->> > +???????????????return 1;
+>> > +       if (peci_bus_match_device_id(peci_drv->id_table, device))
+>> > +               return 1;
 >> > +
->> > +???????return 0;
+>> > +       return 0;
 >> > +}
 >> > +
 >> > +static int peci_bus_device_probe(struct device *dev)
 >> > +{
->> > +???????struct peci_device *device = to_peci_device(dev);
->> > +???????struct peci_driver *driver = to_peci_driver(dev->driver);
+>> > +       struct peci_device *device = to_peci_device(dev);
+>> > +       struct peci_driver *driver = to_peci_driver(dev->driver);
 >> > +
->> > +???????return driver->probe(device, peci_bus_match_device_id(driver-
+>> > +       return driver->probe(device, peci_bus_match_device_id(driver-
 >> > >id_table, device));
 >> > +}
 >> > +
 >> > +static int peci_bus_device_remove(struct device *dev)
 >> > +{
->> > +???????struct peci_device *device = to_peci_device(dev);
->> > +???????struct peci_driver *driver = to_peci_driver(dev->driver);
+>> > +       struct peci_device *device = to_peci_device(dev);
+>> > +       struct peci_driver *driver = to_peci_driver(dev->driver);
 >> > +
->> > +???????if (driver->remove)
->> > +???????????????driver->remove(device);
+>> > +       if (driver->remove)
+>> > +               driver->remove(device);
 >> > +
->> > +???????return 0;
+>> > +       return 0;
 >> > +}
 >> > +
 >> > struct bus_type peci_bus_type = {
->> > ????????.name???????????= "peci",
->> > +???????.match??????????= peci_bus_device_match,
->> > +???????.probe??????????= peci_bus_device_probe,
->> > +???????.remove?????????= peci_bus_device_remove,
->> > ????????.bus_groups?????= peci_bus_groups,
+>> >         .name           = "peci",
+>> > +       .match          = peci_bus_device_match,
+>> > +       .probe          = peci_bus_device_probe,
+>> > +       .remove         = peci_bus_device_remove,
+>> >         .bus_groups     = peci_bus_groups,
 >> > };
 >> >
 >> > diff --git a/drivers/peci/device.c b/drivers/peci/device.c
@@ -117,19 +117,19 @@ On Thu, Jul 29, 2021 at 04:17:06PM CDT, Winiarska, Iwona wrote:
 >> > +#define REVISION_NUM_MASK GENMASK(15, 8)
 >> > +static int peci_get_revision(struct peci_device *device, u8 *revision)
 >> > +{
->> > +???????struct peci_request *req;
->> > +???????u64 dib;
+>> > +       struct peci_request *req;
+>> > +       u64 dib;
 >> > +
->> > +???????req = peci_get_dib(device);
->> > +???????if (IS_ERR(req))
->> > +???????????????return PTR_ERR(req);
+>> > +       req = peci_get_dib(device);
+>> > +       if (IS_ERR(req))
+>> > +               return PTR_ERR(req);
 >> > +
->> > +???????dib = peci_request_data_dib(req);
->> > +???????if (dib == 0) {
->> > +???????????????peci_request_free(req);
->> > +???????????????return -EIO;
+>> > +       dib = peci_request_data_dib(req);
+>> > +       if (dib == 0) {
+>> > +               peci_request_free(req);
+>> > +               return -EIO;
 >>
->> Any particular reason to check for zero specifically here?? It looks
+>> Any particular reason to check for zero specifically here?  It looks
 >> like that would be a case where the host CPU responds and everything's
 >> otherwise fine, but the host just happened to send back a bunch of zeros
 >> for whatever reason -- which may not be a valid PECI revision number,
@@ -169,30 +169,30 @@ I suppose it facilitates an easy zero check, but that could also be
 written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 
 >>
->> > +???????}
+>> > +       }
 >> > +
->> > +???????*revision = FIELD_GET(REVISION_NUM_MASK, dib);
+>> > +       *revision = FIELD_GET(REVISION_NUM_MASK, dib);
 >> > +
->> > +???????peci_request_free(req);
+>> > +       peci_request_free(req);
 >> > +
->> > +???????return 0;
+>> > +       return 0;
 >> > +}
 >> > +
 >> > +static int peci_get_cpu_id(struct peci_device *device, u32 *cpu_id)
 >> > +{
->> > +???????struct peci_request *req;
->> > +???????int ret;
+>> > +       struct peci_request *req;
+>> > +       int ret;
 >> > +
->> > +???????req = peci_pkg_cfg_readl(device, PECI_PCS_PKG_ID,
+>> > +       req = peci_pkg_cfg_readl(device, PECI_PCS_PKG_ID,
 >> > PECI_PKG_ID_CPU_ID);
->> > +???????if (IS_ERR(req))
->> > +???????????????return PTR_ERR(req);
+>> > +       if (IS_ERR(req))
+>> > +               return PTR_ERR(req);
 >> > +
->> > +???????ret = peci_request_status(req);
->> > +???????if (ret)
->> > +???????????????goto out_req_free;
+>> > +       ret = peci_request_status(req);
+>> > +       if (ret)
+>> > +               goto out_req_free;
 >> > +
->> > +???????*cpu_id = peci_request_data_readl(req);
+>> > +       *cpu_id = peci_request_data_readl(req);
 >> > +out_req_free:
 >>
 >> As suggested on patch #8, I think it might be cleaner to stack-allocate
@@ -200,8 +200,8 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >> calls in functions like this and hence might simplify it away entirely,
 >> but if this does remain like this we could just do
 >>
->> ????????if (!ret)
->> ????????????????*cpu_id = peci_request_data_readl(req);
+>>         if (!ret)
+>>                 *cpu_id = peci_request_data_readl(req);
 >>
 >> instead of using a goto to skip a single line.
 >
@@ -211,87 +211,87 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >case of peci requests.
 >
 >>
->> > +???????peci_request_free(req);
+>> > +       peci_request_free(req);
 >> > +
->> > +???????return ret;
+>> > +       return ret;
 >> > +}
 >> > +
 >> > +static int peci_device_info_init(struct peci_device *device)
 >> > +{
->> > +???????u8 revision;
->> > +???????u32 cpu_id;
->> > +???????int ret;
+>> > +       u8 revision;
+>> > +       u32 cpu_id;
+>> > +       int ret;
 >> > +
->> > +???????ret = peci_get_cpu_id(device, &cpu_id);
->> > +???????if (ret)
->> > +???????????????return ret;
+>> > +       ret = peci_get_cpu_id(device, &cpu_id);
+>> > +       if (ret)
+>> > +               return ret;
 >> > +
->> > +???????device->info.family = x86_family(cpu_id);
->> > +???????device->info.model = x86_model(cpu_id);
+>> > +       device->info.family = x86_family(cpu_id);
+>> > +       device->info.model = x86_model(cpu_id);
 >> > +
->> > +???????ret = peci_get_revision(device, &revision);
->> > +???????if (ret)
->> > +???????????????return ret;
->> > +???????device->info.peci_revision = revision;
+>> > +       ret = peci_get_revision(device, &revision);
+>> > +       if (ret)
+>> > +               return ret;
+>> > +       device->info.peci_revision = revision;
 >> > +
->> > +???????device->info.socket_id = device->addr - PECI_BASE_ADDR;
+>> > +       device->info.socket_id = device->addr - PECI_BASE_ADDR;
 >> > +
->> > +???????return 0;
+>> > +       return 0;
 >> > +}
 >> > +
 >> > static int peci_detect(struct peci_controller *controller, u8 addr)
 >> > {
->> > ????????struct peci_request *req;
+>> >         struct peci_request *req;
 >> > @@ -75,6 +143,10 @@ int peci_device_create(struct peci_controller
 >> > *controller, u8 addr)
->> > ????????device->dev.bus = &peci_bus_type;
->> > ????????device->dev.type = &peci_device_type;
+>> >         device->dev.bus = &peci_bus_type;
+>> >         device->dev.type = &peci_device_type;
 >> >
->> > +???????ret = peci_device_info_init(device);
->> > +???????if (ret)
->> > +???????????????goto err_free;
+>> > +       ret = peci_device_info_init(device);
+>> > +       if (ret)
+>> > +               goto err_free;
 >> > +
->> > ????????ret = dev_set_name(&device->dev, "%d-%02x", controller->id, device-
+>> >         ret = dev_set_name(&device->dev, "%d-%02x", controller->id, device-
 >> > >addr);
->> > ????????if (ret)
->> > ????????????????goto err_free;
+>> >         if (ret)
+>> >                 goto err_free;
 >> > @@ -98,6 +170,33 @@ void peci_device_destroy(struct peci_device *device)
->> > ????????device_unregister(&device->dev);
+>> >         device_unregister(&device->dev);
 >> > }
 >> >
 >> > +int __peci_driver_register(struct peci_driver *driver, struct module
 >> > *owner,
->> > +????????????????????????? const char *mod_name)
+>> > +                          const char *mod_name)
 >> > +{
->> > +???????driver->driver.bus = &peci_bus_type;
->> > +???????driver->driver.owner = owner;
->> > +???????driver->driver.mod_name = mod_name;
+>> > +       driver->driver.bus = &peci_bus_type;
+>> > +       driver->driver.owner = owner;
+>> > +       driver->driver.mod_name = mod_name;
 >> > +
->> > +???????if (!driver->probe) {
->> > +???????????????pr_err("peci: trying to register driver without probe
+>> > +       if (!driver->probe) {
+>> > +               pr_err("peci: trying to register driver without probe
 >> > callback\n");
->> > +???????????????return -EINVAL;
->> > +???????}
+>> > +               return -EINVAL;
+>> > +       }
 >> > +
->> > +???????if (!driver->id_table) {
->> > +???????????????pr_err("peci: trying to register driver without device id
+>> > +       if (!driver->id_table) {
+>> > +               pr_err("peci: trying to register driver without device id
 >> > table\n");
->> > +???????????????return -EINVAL;
->> > +???????}
+>> > +               return -EINVAL;
+>> > +       }
 >> > +
->> > +???????return driver_register(&driver->driver);
+>> > +       return driver_register(&driver->driver);
 >> > +}
 >> > +EXPORT_SYMBOL_NS_GPL(__peci_driver_register, PECI);
 >> > +
 >> > +void peci_driver_unregister(struct peci_driver *driver)
 >> > +{
->> > +???????driver_unregister(&driver->driver);
+>> > +       driver_unregister(&driver->driver);
 >> > +}
 >> > +EXPORT_SYMBOL_NS_GPL(peci_driver_unregister, PECI);
 >> > +
 >> > static void peci_device_release(struct device *dev)
 >> > {
->> > ????????struct peci_device *device = to_peci_device(dev);
+>> >         struct peci_device *device = to_peci_device(dev);
 >> > diff --git a/drivers/peci/internal.h b/drivers/peci/internal.h
 >> > index 6b139adaf6b8..c891c93e077a 100644
 >> > --- a/drivers/peci/internal.h
@@ -328,9 +328,9 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >> > + * @model: device model
 >> > + */
 >> > +struct peci_device_id {
->> > +???????const void *data;
->> > +???????u16 family;
->> > +???????u8 model;
+>> > +       const void *data;
+>> > +       u16 family;
+>> > +       u8 model;
 >> > +};
 >> > +
 >> > extern struct device_type peci_device_type;
@@ -348,21 +348,21 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >> > + * @id_table: PECI device match table to decide which device to bind
 >> > + */
 >> > +struct peci_driver {
->> > +???????struct device_driver driver;
->> > +???????int (*probe)(struct peci_device *device, const struct peci_device_id
+>> > +       struct device_driver driver;
+>> > +       int (*probe)(struct peci_device *device, const struct peci_device_id
 >> > *id);
->> > +???????void (*remove)(struct peci_device *device);
->> > +???????const struct peci_device_id *id_table;
+>> > +       void (*remove)(struct peci_device *device);
+>> > +       const struct peci_device_id *id_table;
 >> > +};
 >> > +
 >> > +static inline struct peci_driver *to_peci_driver(struct device_driver *d)
 >> > +{
->> > +???????return container_of(d, struct peci_driver, driver);
+>> > +       return container_of(d, struct peci_driver, driver);
 >> > +}
 >> > +
 >> > +int __peci_driver_register(struct peci_driver *driver, struct module
 >> > *owner,
->> > +????????????????????????? const char *mod_name);
+>> > +                          const char *mod_name);
 >> > +/**
 >> > + * peci_driver_register() - register PECI driver
 >> > + * @driver: the driver to be registered
@@ -376,7 +376,7 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >> > + * Return: zero on success, else a negative error code.
 >> > + */
 >> > +#define peci_driver_register(driver) \
->> > +???????__peci_driver_register(driver, THIS_MODULE, KBUILD_MODNAME)
+>> > +       __peci_driver_register(driver, THIS_MODULE, KBUILD_MODNAME)
 >> > +void peci_driver_unregister(struct peci_driver *driver);
 >> > +
 >> > +/**
@@ -390,7 +390,7 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >> > module_exit()
 >> > + */
 >> > +#define module_peci_driver(__peci_driver) \
->> > +???????module_driver(__peci_driver, peci_driver_register,
+>> > +       module_driver(__peci_driver, peci_driver_register,
 >> > peci_driver_unregister)
 >> > +
 >> > extern struct device_type peci_controller_type;
@@ -414,39 +414,39 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >> > +
 >> > #include "internal.h"
 >> >
->> > +#define PECI_GET_DIB_CMD???????????????0xf7
->> > +#define? PECI_GET_DIB_WR_LEN???????????1
->> > +#define? PECI_GET_DIB_RD_LEN???????????8
+>> > +#define PECI_GET_DIB_CMD               0xf7
+>> > +#define  PECI_GET_DIB_WR_LEN           1
+>> > +#define  PECI_GET_DIB_RD_LEN           8
 >> > +
->> > +#define PECI_RDPKGCFG_CMD??????????????0xa1
->> > +#define? PECI_RDPKGCFG_WRITE_LEN???????5
->> > +#define? PECI_RDPKGCFG_READ_LEN_BASE???1
->> > +#define PECI_WRPKGCFG_CMD??????????????0xa5
->> > +#define? PECI_WRPKGCFG_WRITE_LEN_BASE??6
->> > +#define? PECI_WRPKGCFG_READ_LEN????????????????1
+>> > +#define PECI_RDPKGCFG_CMD              0xa1
+>> > +#define  PECI_RDPKGCFG_WRITE_LEN       5
+>> > +#define  PECI_RDPKGCFG_READ_LEN_BASE   1
+>> > +#define PECI_WRPKGCFG_CMD              0xa5
+>> > +#define  PECI_WRPKGCFG_WRITE_LEN_BASE  6
+>> > +#define  PECI_WRPKGCFG_READ_LEN                1
 >> > +
 >> > +/* Device Specific Completion Code (CC) Definition */
->> > +#define PECI_CC_SUCCESS????????????????????????????????0x40
->> > +#define PECI_CC_NEED_RETRY?????????????????????0x80
->> > +#define PECI_CC_OUT_OF_RESOURCE????????????????????????0x81
->> > +#define PECI_CC_UNAVAIL_RESOURCE???????????????0x82
->> > +#define PECI_CC_INVALID_REQ????????????????????0x90
->> > +#define PECI_CC_MCA_ERROR??????????????????????0x91
->> > +#define PECI_CC_CATASTROPHIC_MCA_ERROR?????????0x93
->> > +#define PECI_CC_FATAL_MCA_ERROR????????????????????????0x94
->> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB????????????????0x98
->> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB_IERR???0x9B
->> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB_MCA????0x9C
->> > +
->> > +#define PECI_RETRY_BIT?????????????????BIT(0)
->> > +
->> > +#define PECI_RETRY_TIMEOUT?????????????msecs_to_jiffies(700)
->> > +#define PECI_RETRY_INTERVAL_MIN????????????????msecs_to_jiffies(1)
->> > +#define PECI_RETRY_INTERVAL_MAX????????????????msecs_to_jiffies(128)
+>> > +#define PECI_CC_SUCCESS                                0x40
+>> > +#define PECI_CC_NEED_RETRY                     0x80
+>> > +#define PECI_CC_OUT_OF_RESOURCE                        0x81
+>> > +#define PECI_CC_UNAVAIL_RESOURCE               0x82
+>> > +#define PECI_CC_INVALID_REQ                    0x90
+>> > +#define PECI_CC_MCA_ERROR                      0x91
+>> > +#define PECI_CC_CATASTROPHIC_MCA_ERROR         0x93
+>> > +#define PECI_CC_FATAL_MCA_ERROR                        0x94
+>> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB                0x98
+>> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB_IERR   0x9B
+>> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB_MCA    0x9C
+>> > +
+>> > +#define PECI_RETRY_BIT                 BIT(0)
+>> > +
+>> > +#define PECI_RETRY_TIMEOUT             msecs_to_jiffies(700)
+>> > +#define PECI_RETRY_INTERVAL_MIN                msecs_to_jiffies(1)
+>> > +#define PECI_RETRY_INTERVAL_MAX                msecs_to_jiffies(128)
 >> > +
 >> > +static u8 peci_request_data_cc(struct peci_request *req)
 >> > +{
->> > +???????return req->rx.buf[0];
+>> > +       return req->rx.buf[0];
 >> > +}
 >> > +
 >> > +/**
@@ -461,175 +461,175 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >> > + */
 >> > +int peci_request_status(struct peci_request *req)
 >> > +{
->> > +???????u8 cc = peci_request_data_cc(req);
->> > +
->> > +???????if (cc != PECI_CC_SUCCESS)
->> > +???????????????dev_dbg(&req->device->dev, "ret: %#02x\n", cc);
->> > +
->> > +???????switch (cc) {
->> > +???????case PECI_CC_SUCCESS:
->> > +???????????????return 0;
->> > +???????case PECI_CC_NEED_RETRY:
->> > +???????case PECI_CC_OUT_OF_RESOURCE:
->> > +???????case PECI_CC_UNAVAIL_RESOURCE:
->> > +???????????????return -EAGAIN;
->> > +???????case PECI_CC_INVALID_REQ:
->> > +???????????????return -EINVAL;
->> > +???????case PECI_CC_MCA_ERROR:
->> > +???????case PECI_CC_CATASTROPHIC_MCA_ERROR:
->> > +???????case PECI_CC_FATAL_MCA_ERROR:
->> > +???????case PECI_CC_PARITY_ERR_GPSB_OR_PMSB:
->> > +???????case PECI_CC_PARITY_ERR_GPSB_OR_PMSB_IERR:
->> > +???????case PECI_CC_PARITY_ERR_GPSB_OR_PMSB_MCA:
->> > +???????????????return -EIO;
->> > +???????}
->> > +
->> > +???????WARN_ONCE(1, "Unknown PECI completion code: %#02x\n", cc);
->> > +
->> > +???????return -EIO;
+>> > +       u8 cc = peci_request_data_cc(req);
+>> > +
+>> > +       if (cc != PECI_CC_SUCCESS)
+>> > +               dev_dbg(&req->device->dev, "ret: %#02x\n", cc);
+>> > +
+>> > +       switch (cc) {
+>> > +       case PECI_CC_SUCCESS:
+>> > +               return 0;
+>> > +       case PECI_CC_NEED_RETRY:
+>> > +       case PECI_CC_OUT_OF_RESOURCE:
+>> > +       case PECI_CC_UNAVAIL_RESOURCE:
+>> > +               return -EAGAIN;
+>> > +       case PECI_CC_INVALID_REQ:
+>> > +               return -EINVAL;
+>> > +       case PECI_CC_MCA_ERROR:
+>> > +       case PECI_CC_CATASTROPHIC_MCA_ERROR:
+>> > +       case PECI_CC_FATAL_MCA_ERROR:
+>> > +       case PECI_CC_PARITY_ERR_GPSB_OR_PMSB:
+>> > +       case PECI_CC_PARITY_ERR_GPSB_OR_PMSB_IERR:
+>> > +       case PECI_CC_PARITY_ERR_GPSB_OR_PMSB_MCA:
+>> > +               return -EIO;
+>> > +       }
+>> > +
+>> > +       WARN_ONCE(1, "Unknown PECI completion code: %#02x\n", cc);
+>> > +
+>> > +       return -EIO;
 >> > +}
 >> > +EXPORT_SYMBOL_NS_GPL(peci_request_status, PECI);
 >> > +
 >> > +static int peci_request_xfer(struct peci_request *req)
 >> > +{
->> > +???????struct peci_device *device = req->device;
->> > +???????struct peci_controller *controller = device->controller;
->> > +???????int ret;
+>> > +       struct peci_device *device = req->device;
+>> > +       struct peci_controller *controller = device->controller;
+>> > +       int ret;
 >> > +
->> > +???????mutex_lock(&controller->bus_lock);
->> > +???????ret = controller->xfer(controller, device->addr, req);
->> > +???????mutex_unlock(&controller->bus_lock);
+>> > +       mutex_lock(&controller->bus_lock);
+>> > +       ret = controller->xfer(controller, device->addr, req);
+>> > +       mutex_unlock(&controller->bus_lock);
 >> > +
->> > +???????return ret;
+>> > +       return ret;
 >> > +}
 >> > +
 >> > +static int peci_request_xfer_retry(struct peci_request *req)
 >> > +{
->> > +???????long wait_interval = PECI_RETRY_INTERVAL_MIN;
->> > +???????struct peci_device *device = req->device;
->> > +???????struct peci_controller *controller = device->controller;
->> > +???????unsigned long start = jiffies;
->> > +???????int ret;
->> > +
->> > +???????/* Don't try to use it for ping */
->> > +???????if (WARN_ON(!req->rx.buf))
->> > +???????????????return 0;
->> > +
->> > +???????do {
->> > +???????????????ret = peci_request_xfer(req);
->> > +???????????????if (ret) {
->> > +???????????????????????dev_dbg(&controller->dev, "xfer error: %d\n", ret);
->> > +???????????????????????return ret;
->> > +???????????????}
->> > +
->> > +???????????????if (peci_request_status(req) != -EAGAIN)
->> > +???????????????????????return 0;
->> > +
->> > +???????????????/* Set the retry bit to indicate a retry attempt */
->> > +???????????????req->tx.buf[1] |= PECI_RETRY_BIT;
->> > +
->> > +???????????????if (schedule_timeout_interruptible(wait_interval))
->> > +???????????????????????return -ERESTARTSYS;
->> > +
->> > +???????????????wait_interval *= 2;
->> > +???????????????if (wait_interval > PECI_RETRY_INTERVAL_MAX)
->> > +???????????????????????wait_interval = PECI_RETRY_INTERVAL_MAX;
+>> > +       long wait_interval = PECI_RETRY_INTERVAL_MIN;
+>> > +       struct peci_device *device = req->device;
+>> > +       struct peci_controller *controller = device->controller;
+>> > +       unsigned long start = jiffies;
+>> > +       int ret;
+>> > +
+>> > +       /* Don't try to use it for ping */
+>> > +       if (WARN_ON(!req->rx.buf))
+>> > +               return 0;
+>> > +
+>> > +       do {
+>> > +               ret = peci_request_xfer(req);
+>> > +               if (ret) {
+>> > +                       dev_dbg(&controller->dev, "xfer error: %d\n", ret);
+>> > +                       return ret;
+>> > +               }
+>> > +
+>> > +               if (peci_request_status(req) != -EAGAIN)
+>> > +                       return 0;
+>> > +
+>> > +               /* Set the retry bit to indicate a retry attempt */
+>> > +               req->tx.buf[1] |= PECI_RETRY_BIT;
+>> > +
+>> > +               if (schedule_timeout_interruptible(wait_interval))
+>> > +                       return -ERESTARTSYS;
+>> > +
+>> > +               wait_interval *= 2;
+>> > +               if (wait_interval > PECI_RETRY_INTERVAL_MAX)
+>> > +                       wait_interval = PECI_RETRY_INTERVAL_MAX;
 >>
 >> wait_interval = min(wait_interval * 2, PECI_RETRY_INTERVAL_MAX) ?
 >
 >Ack.
 >
 >>
->> > +???????} while (time_before(jiffies, start + PECI_RETRY_TIMEOUT));
+>> > +       } while (time_before(jiffies, start + PECI_RETRY_TIMEOUT));
 >> > +
->> > +???????dev_dbg(&controller->dev, "request timed out\n");
+>> > +       dev_dbg(&controller->dev, "request timed out\n");
 >> > +
->> > +???????return -ETIMEDOUT;
+>> > +       return -ETIMEDOUT;
 >> > +}
 >> > +
 >> > /**
->> > ?* peci_request_alloc() - allocate &struct peci_request with buffers with
+>> >  * peci_request_alloc() - allocate &struct peci_request with buffers with
 >> > given lengths
->> > ?* @device: PECI device to which request is going to be sent
+>> >  * @device: PECI device to which request is going to be sent
 >> > @@ -72,3 +201,91 @@ void peci_request_free(struct peci_request *req)
->> > ????????kfree(req);
+>> >         kfree(req);
 >> > }
 >> > EXPORT_SYMBOL_NS_GPL(peci_request_free, PECI);
 >> > +
 >> > +struct peci_request *peci_get_dib(struct peci_device *device)
 >> > +{
->> > +???????struct peci_request *req;
->> > +???????int ret;
+>> > +       struct peci_request *req;
+>> > +       int ret;
 >> > +
->> > +???????req = peci_request_alloc(device, PECI_GET_DIB_WR_LEN,
+>> > +       req = peci_request_alloc(device, PECI_GET_DIB_WR_LEN,
 >> > PECI_GET_DIB_RD_LEN);
->> > +???????if (!req)
->> > +???????????????return ERR_PTR(-ENOMEM);
+>> > +       if (!req)
+>> > +               return ERR_PTR(-ENOMEM);
 >> > +
->> > +???????req->tx.buf[0] = PECI_GET_DIB_CMD;
+>> > +       req->tx.buf[0] = PECI_GET_DIB_CMD;
 >> > +
->> > +???????ret = peci_request_xfer(req);
->> > +???????if (ret) {
->> > +???????????????peci_request_free(req);
->> > +???????????????return ERR_PTR(ret);
->> > +???????}
+>> > +       ret = peci_request_xfer(req);
+>> > +       if (ret) {
+>> > +               peci_request_free(req);
+>> > +               return ERR_PTR(ret);
+>> > +       }
 >> > +
->> > +???????return req;
+>> > +       return req;
 >> > +}
 >> > +EXPORT_SYMBOL_NS_GPL(peci_get_dib, PECI);
 >> > +
 >> > +static struct peci_request *
 >> > +__pkg_cfg_read(struct peci_device *device, u8 index, u16 param, u8 len)
 >> > +{
->> > +???????struct peci_request *req;
->> > +???????int ret;
->> > +
->> > +???????req = peci_request_alloc(device, PECI_RDPKGCFG_WRITE_LEN,
->> > +??????????????????????????????? PECI_RDPKGCFG_READ_LEN_BASE + len);
->> > +???????if (!req)
->> > +???????????????return ERR_PTR(-ENOMEM);
->> > +
->> > +???????req->tx.buf[0] = PECI_RDPKGCFG_CMD;
->> > +???????req->tx.buf[1] = 0;
->> > +???????req->tx.buf[2] = index;
->> > +???????put_unaligned_le16(param, &req->tx.buf[3]);
->> > +
->> > +???????ret = peci_request_xfer_retry(req);
->> > +???????if (ret) {
->> > +???????????????peci_request_free(req);
->> > +???????????????return ERR_PTR(ret);
->> > +???????}
->> > +
->> > +???????return req;
+>> > +       struct peci_request *req;
+>> > +       int ret;
+>> > +
+>> > +       req = peci_request_alloc(device, PECI_RDPKGCFG_WRITE_LEN,
+>> > +                                PECI_RDPKGCFG_READ_LEN_BASE + len);
+>> > +       if (!req)
+>> > +               return ERR_PTR(-ENOMEM);
+>> > +
+>> > +       req->tx.buf[0] = PECI_RDPKGCFG_CMD;
+>> > +       req->tx.buf[1] = 0;
+>> > +       req->tx.buf[2] = index;
+>> > +       put_unaligned_le16(param, &req->tx.buf[3]);
+>> > +
+>> > +       ret = peci_request_xfer_retry(req);
+>> > +       if (ret) {
+>> > +               peci_request_free(req);
+>> > +               return ERR_PTR(ret);
+>> > +       }
+>> > +
+>> > +       return req;
 >> > +}
 >> > +
 >> > +u8 peci_request_data_readb(struct peci_request *req)
 >> > +{
->> > +???????return req->rx.buf[1];
+>> > +       return req->rx.buf[1];
 >> > +}
 >> > +EXPORT_SYMBOL_NS_GPL(peci_request_data_readb, PECI);
 >> > +
 >> > +u16 peci_request_data_readw(struct peci_request *req)
 >> > +{
->> > +???????return get_unaligned_le16(&req->rx.buf[1]);
+>> > +       return get_unaligned_le16(&req->rx.buf[1]);
 >> > +}
 >> > +EXPORT_SYMBOL_NS_GPL(peci_request_data_readw, PECI);
 >> > +
 >> > +u32 peci_request_data_readl(struct peci_request *req)
 >> > +{
->> > +???????return get_unaligned_le32(&req->rx.buf[1]);
+>> > +       return get_unaligned_le32(&req->rx.buf[1]);
 >> > +}
 >> > +EXPORT_SYMBOL_NS_GPL(peci_request_data_readl, PECI);
 >> > +
 >> > +u64 peci_request_data_readq(struct peci_request *req)
 >> > +{
->> > +???????return get_unaligned_le64(&req->rx.buf[1]);
+>> > +       return get_unaligned_le64(&req->rx.buf[1]);
 >> > +}
 >> > +EXPORT_SYMBOL_NS_GPL(peci_request_data_readq, PECI);
 >> > +
 >> > +u64 peci_request_data_dib(struct peci_request *req)
 >> > +{
->> > +???????return get_unaligned_le64(&req->rx.buf[0]);
+>> > +       return get_unaligned_le64(&req->rx.buf[0]);
 >> > +}
 >> > +EXPORT_SYMBOL_NS_GPL(peci_request_data_dib, PECI);
 >> > +
@@ -637,10 +637,10 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >> > +struct peci_request *peci_pkg_cfg_##x(struct peci_device *device, u8 index,
 >> > u16 param) \
 >> > +{ \
->> > +???????return __pkg_cfg_read(device, index, param, sizeof(type)); \
+>> > +       return __pkg_cfg_read(device, index, param, sizeof(type)); \
 >> > +} \
 >>
->> Is there a reason for this particular API?? I'd think a more natural one
+>> Is there a reason for this particular API?  I'd think a more natural one
 >> that would offload a bit of boilerplate from callers would look more like
 >>
 >> int peci_pkg_cfg_##x(struct peci_device *device, u8 index, u16 param, type
@@ -672,42 +672,42 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >> > #include <linux/mutex.h>
 >> > #include <linux/types.h>
 >> >
->> > +#define PECI_PCS_PKG_ID????????????????????????0? /* Package Identifier
+>> > +#define PECI_PCS_PKG_ID                        0  /* Package Identifier
 >> > Read */
->> > +#define? PECI_PKG_ID_CPU_ID????????????0x0000? /* CPUID Info */
->> > +#define? PECI_PKG_ID_PLATFORM_ID???????0x0001? /* Platform ID */
->> > +#define? PECI_PKG_ID_DEVICE_ID?????????0x0002? /* Uncore Device ID */
->> > +#define? PECI_PKG_ID_MAX_THREAD_ID?????0x0003? /* Max Thread ID */
->> > +#define? PECI_PKG_ID_MICROCODE_REV?????0x0004? /* CPU Microcode Update
+>> > +#define  PECI_PKG_ID_CPU_ID            0x0000  /* CPUID Info */
+>> > +#define  PECI_PKG_ID_PLATFORM_ID       0x0001  /* Platform ID */
+>> > +#define  PECI_PKG_ID_DEVICE_ID         0x0002  /* Uncore Device ID */
+>> > +#define  PECI_PKG_ID_MAX_THREAD_ID     0x0003  /* Max Thread ID */
+>> > +#define  PECI_PKG_ID_MICROCODE_REV     0x0004  /* CPU Microcode Update
 >> > Revision */
->> > +#define? PECI_PKG_ID_MCA_ERROR_LOG?????0x0005? /* Machine Check Status */
+>> > +#define  PECI_PKG_ID_MCA_ERROR_LOG     0x0005  /* Machine Check Status */
 >> > +
 >> > struct peci_request;
 >> >
 >> > /**
 >> > @@ -41,6 +49,11 @@ static inline struct peci_controller
 >> > *to_peci_controller(void *d)
->> > ?* struct peci_device - PECI device
->> > ?* @dev: device object to register PECI device to the device model
->> > ?* @controller: manages the bus segment hosting this PECI device
+>> >  * struct peci_device - PECI device
+>> >  * @dev: device object to register PECI device to the device model
+>> >  * @controller: manages the bus segment hosting this PECI device
 >> > + * @info: PECI device characteristics
 >> > + * @info.family: device family
 >> > + * @info.model: device model
 >> > + * @info.peci_revision: PECI revision supported by the PECI device
 >> > + * @info.socket_id: the socket ID represented by the PECI device
->> > ?* @addr: address used on the PECI bus connected to the parent controller
->> > ?*
->> > ?* A peci_device identifies a single device (i.e. CPU) connected to a PECI
+>> >  * @addr: address used on the PECI bus connected to the parent controller
+>> >  *
+>> >  * A peci_device identifies a single device (i.e. CPU) connected to a PECI
 >> > bus.
 >> > @@ -50,6 +63,12 @@ static inline struct peci_controller
 >> > *to_peci_controller(void *d)
 >> > struct peci_device {
->> > ????????struct device dev;
->> > ????????struct peci_controller *controller;
->> > +???????struct {
->> > +???????????????u16 family;
->> > +???????????????u8 model;
->> > +???????????????u8 peci_revision;
+>> >         struct device dev;
+>> >         struct peci_controller *controller;
+>> > +       struct {
+>> > +               u16 family;
+>> > +               u8 model;
+>> > +               u8 peci_revision;
 >>
 >> This field gets set but doesn't seem to end up used anywhere; is it
 >> useful?
@@ -722,9 +722,9 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >-Iwona
 >
 >>
->> > +???????????????u8 socket_id;
->> > +???????} info;
->> > ????????u8 addr;
+>> > +               u8 socket_id;
+>> > +       } info;
+>> >         u8 addr;
 >> > };
 >> >
 >> > diff --git a/lib/Kconfig b/lib/Kconfig
@@ -734,10 +734,10 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >> > @@ -721,5 +721,5 @@ config ASN1_ENCODER
 >> >
 >> > config GENERIC_LIB_X86
->> > ????????bool
->> > -???????depends on X86
->> > +???????depends on X86 || PECI
->> > ????????default n
+>> >         bool
+>> > -       depends on X86
+>> > +       depends on X86 || PECI
+>> >         default n
 >> > --
 >> > 2.31.1
 >
diff --git a/a/content_digest b/N1/content_digest
index 315ee2f..4077ab7 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -3,9 +3,36 @@
  "ref\020210727201028.GS8018@packtop\0"
  "ref\079f5b6ed4942ddeb66beea03907a58495376ccef.camel@intel.com\0"
  "From\0Zev Weiss <zweiss@equinix.com>\0"
- "Subject\0[PATCH 09/14] peci: Add support for PECI device drivers\0"
+ "Subject\0Re: [PATCH 09/14] peci: Add support for PECI device drivers\0"
  "Date\0Thu, 29 Jul 2021 23:22:06 +0000\0"
- "To\0linux-aspeed@lists.ozlabs.org\0"
+ "To\0Winiarska"
+ " Iwona <iwona.winiarska@intel.com>\0"
+ "Cc\0corbet@lwn.net <corbet@lwn.net>"
+  jae.hyun.yoo@linux.intel.com <jae.hyun.yoo@linux.intel.com>
+  Lutomirski
+  Andy <luto@kernel.org>
+  linux-hwmon@vger.kernel.org <linux-hwmon@vger.kernel.org>
+  Luck
+  Tony <tony.luck@intel.com>
+  andrew@aj.id.au <andrew@aj.id.au>
+  mchehab@kernel.org <mchehab@kernel.org>
+  jdelvare@suse.com <jdelvare@suse.com>
+  linux-kernel@vger.kernel.org <linux-kernel@vger.kernel.org>
+  mingo@redhat.com <mingo@redhat.com>
+  devicetree@vger.kernel.org <devicetree@vger.kernel.org>
+  tglx@linutronix.de <tglx@linutronix.de>
+  linux@roeck-us.net <linux@roeck-us.net>
+  linux-aspeed@lists.ozlabs.org <linux-aspeed@lists.ozlabs.org>
+  linux-doc@vger.kernel.org <linux-doc@vger.kernel.org>
+  yazen.ghannam@amd.com <yazen.ghannam@amd.com>
+  robh+dt@kernel.org <robh+dt@kernel.org>
+  openbmc@lists.ozlabs.org <openbmc@lists.ozlabs.org>
+  bp@alien8.de <bp@alien8.de>
+  linux-arm-kernel@lists.infradead.org <linux-arm-kernel@lists.infradead.org>
+  pierre-louis.bossart@linux.intel.com <pierre-louis.bossart@linux.intel.com>
+  andriy.shevchenko@linux.intel.com <andriy.shevchenko@linux.intel.com>
+  x86@kernel.org <x86@kernel.org>
+ " gregkh@linuxfoundation.org <gregkh@linuxfoundation.org>\0"
  "\00:1\0"
  "b\0"
  "On Thu, Jul 29, 2021 at 04:17:06PM CDT, Winiarska, Iwona wrote:\n"
@@ -22,13 +49,13 @@
  ">> > Signed-off-by: Iwona Winiarska <iwona.winiarska@intel.com>\n"
  ">> > Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>\n"
  ">> > ---\n"
- ">> > drivers/peci/Kconfig??? |?? 1 +\n"
- ">> > drivers/peci/core.c???? |? 49 +++++++++\n"
- ">> > drivers/peci/device.c?? |? 99 ++++++++++++++++++\n"
- ">> > drivers/peci/internal.h |? 75 ++++++++++++++\n"
- ">> > drivers/peci/request.c? | 217 ++++++++++++++++++++++++++++++++++++++++\n"
- ">> > include/linux/peci.h??? |? 19 ++++\n"
- ">> > lib/Kconfig???????????? |?? 2 +-\n"
+ ">> > drivers/peci/Kconfig\302\240\302\240\302\240 |\302\240\302\240 1 +\n"
+ ">> > drivers/peci/core.c\302\240\302\240\302\240\302\240 |\302\240 49 +++++++++\n"
+ ">> > drivers/peci/device.c\302\240\302\240 |\302\240 99 ++++++++++++++++++\n"
+ ">> > drivers/peci/internal.h |\302\240 75 ++++++++++++++\n"
+ ">> > drivers/peci/request.c\302\240 | 217 ++++++++++++++++++++++++++++++++++++++++\n"
+ ">> > include/linux/peci.h\302\240\302\240\302\240 |\302\240 19 ++++\n"
+ ">> > lib/Kconfig\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 |\302\240\302\240 2 +-\n"
  ">> > 7 files changed, 461 insertions(+), 1 deletion(-)\n"
  ">> >\n"
  ">> > diff --git a/drivers/peci/Kconfig b/drivers/peci/Kconfig\n"
@@ -38,11 +65,11 @@
  ">> > @@ -2,6 +2,7 @@\n"
  ">> >\n"
  ">> > menuconfig PECI\n"
- ">> > ????????tristate \"PECI support\"\n"
- ">> > +???????select GENERIC_LIB_X86\n"
- ">> > ????????help\n"
- ">> > ????????? The Platform Environment Control Interface (PECI) is an interface\n"
- ">> > ????????? that provides a communication channel to Intel processors and\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240tristate \"PECI support\"\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240select GENERIC_LIB_X86\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240help\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 The Platform Environment Control Interface (PECI) is an interface\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 that provides a communication channel to Intel processors and\n"
  ">> > diff --git a/drivers/peci/core.c b/drivers/peci/core.c\n"
  ">> > index ae7a9572cdf3..94426b7f2618 100644\n"
  ">> > --- a/drivers/peci/core.c\n"
@@ -56,57 +83,57 @@
  ">> > +peci_bus_match_device_id(const struct peci_device_id *id, struct\n"
  ">> > peci_device *device)\n"
  ">> > +{\n"
- ">> > +???????while (id->family != 0) {\n"
- ">> > +???????????????if (id->family == device->info.family &&\n"
- ">> > +?????????????????? id->model == device->info.model)\n"
- ">> > +???????????????????????return id;\n"
- ">> > +???????????????id++;\n"
- ">> > +???????}\n"
- ">> > +\n"
- ">> > +???????return NULL;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240while (id->family != 0) {\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (id->family == device->info.family &&\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 id->model == device->info.model)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return id;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240id++;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return NULL;\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > +static int peci_bus_device_match(struct device *dev, struct device_driver\n"
  ">> > *drv)\n"
  ">> > +{\n"
- ">> > +???????struct peci_device *device = to_peci_device(dev);\n"
- ">> > +???????struct peci_driver *peci_drv = to_peci_driver(drv);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_device *device = to_peci_device(dev);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_driver *peci_drv = to_peci_driver(drv);\n"
  ">> > +\n"
- ">> > +???????if (dev->type != &peci_device_type)\n"
- ">> > +???????????????return 0;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (dev->type != &peci_device_type)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return 0;\n"
  ">> > +\n"
- ">> > +???????if (peci_bus_match_device_id(peci_drv->id_table, device))\n"
- ">> > +???????????????return 1;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (peci_bus_match_device_id(peci_drv->id_table, device))\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return 1;\n"
  ">> > +\n"
- ">> > +???????return 0;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return 0;\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > +static int peci_bus_device_probe(struct device *dev)\n"
  ">> > +{\n"
- ">> > +???????struct peci_device *device = to_peci_device(dev);\n"
- ">> > +???????struct peci_driver *driver = to_peci_driver(dev->driver);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_device *device = to_peci_device(dev);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_driver *driver = to_peci_driver(dev->driver);\n"
  ">> > +\n"
- ">> > +???????return driver->probe(device, peci_bus_match_device_id(driver-\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return driver->probe(device, peci_bus_match_device_id(driver-\n"
  ">> > >id_table, device));\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > +static int peci_bus_device_remove(struct device *dev)\n"
  ">> > +{\n"
- ">> > +???????struct peci_device *device = to_peci_device(dev);\n"
- ">> > +???????struct peci_driver *driver = to_peci_driver(dev->driver);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_device *device = to_peci_device(dev);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_driver *driver = to_peci_driver(dev->driver);\n"
  ">> > +\n"
- ">> > +???????if (driver->remove)\n"
- ">> > +???????????????driver->remove(device);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (driver->remove)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240driver->remove(device);\n"
  ">> > +\n"
- ">> > +???????return 0;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return 0;\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > struct bus_type peci_bus_type = {\n"
- ">> > ????????.name???????????= \"peci\",\n"
- ">> > +???????.match??????????= peci_bus_device_match,\n"
- ">> > +???????.probe??????????= peci_bus_device_probe,\n"
- ">> > +???????.remove?????????= peci_bus_device_remove,\n"
- ">> > ????????.bus_groups?????= peci_bus_groups,\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240.name\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240= \"peci\",\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240.match\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240= peci_bus_device_match,\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240.probe\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240= peci_bus_device_probe,\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240.remove\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240= peci_bus_device_remove,\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240.bus_groups\302\240\302\240\302\240\302\240\302\240= peci_bus_groups,\n"
  ">> > };\n"
  ">> >\n"
  ">> > diff --git a/drivers/peci/device.c b/drivers/peci/device.c\n"
@@ -127,19 +154,19 @@
  ">> > +#define REVISION_NUM_MASK GENMASK(15, 8)\n"
  ">> > +static int peci_get_revision(struct peci_device *device, u8 *revision)\n"
  ">> > +{\n"
- ">> > +???????struct peci_request *req;\n"
- ">> > +???????u64 dib;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_request *req;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240u64 dib;\n"
  ">> > +\n"
- ">> > +???????req = peci_get_dib(device);\n"
- ">> > +???????if (IS_ERR(req))\n"
- ">> > +???????????????return PTR_ERR(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240req = peci_get_dib(device);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (IS_ERR(req))\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return PTR_ERR(req);\n"
  ">> > +\n"
- ">> > +???????dib = peci_request_data_dib(req);\n"
- ">> > +???????if (dib == 0) {\n"
- ">> > +???????????????peci_request_free(req);\n"
- ">> > +???????????????return -EIO;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240dib = peci_request_data_dib(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (dib == 0) {\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240peci_request_free(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return -EIO;\n"
  ">>\n"
- ">> Any particular reason to check for zero specifically here?? It looks\n"
+ ">> Any particular reason to check for zero specifically here?\302\240 It looks\n"
  ">> like that would be a case where the host CPU responds and everything's\n"
  ">> otherwise fine, but the host just happened to send back a bunch of zeros\n"
  ">> for whatever reason -- which may not be a valid PECI revision number,\n"
@@ -179,30 +206,30 @@
  "written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.\n"
  "\n"
  ">>\n"
- ">> > +???????}\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\n"
  ">> > +\n"
- ">> > +???????*revision = FIELD_GET(REVISION_NUM_MASK, dib);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240*revision = FIELD_GET(REVISION_NUM_MASK, dib);\n"
  ">> > +\n"
- ">> > +???????peci_request_free(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240peci_request_free(req);\n"
  ">> > +\n"
- ">> > +???????return 0;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return 0;\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > +static int peci_get_cpu_id(struct peci_device *device, u32 *cpu_id)\n"
  ">> > +{\n"
- ">> > +???????struct peci_request *req;\n"
- ">> > +???????int ret;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_request *req;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240int ret;\n"
  ">> > +\n"
- ">> > +???????req = peci_pkg_cfg_readl(device, PECI_PCS_PKG_ID,\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240req = peci_pkg_cfg_readl(device, PECI_PCS_PKG_ID,\n"
  ">> > PECI_PKG_ID_CPU_ID);\n"
- ">> > +???????if (IS_ERR(req))\n"
- ">> > +???????????????return PTR_ERR(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (IS_ERR(req))\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return PTR_ERR(req);\n"
  ">> > +\n"
- ">> > +???????ret = peci_request_status(req);\n"
- ">> > +???????if (ret)\n"
- ">> > +???????????????goto out_req_free;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = peci_request_status(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (ret)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240goto out_req_free;\n"
  ">> > +\n"
- ">> > +???????*cpu_id = peci_request_data_readl(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240*cpu_id = peci_request_data_readl(req);\n"
  ">> > +out_req_free:\n"
  ">>\n"
  ">> As suggested on patch #8, I think it might be cleaner to stack-allocate\n"
@@ -210,8 +237,8 @@
  ">> calls in functions like this and hence might simplify it away entirely,\n"
  ">> but if this does remain like this we could just do\n"
  ">>\n"
- ">> ????????if (!ret)\n"
- ">> ????????????????*cpu_id = peci_request_data_readl(req);\n"
+ ">> \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (!ret)\n"
+ ">> \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240*cpu_id = peci_request_data_readl(req);\n"
  ">>\n"
  ">> instead of using a goto to skip a single line.\n"
  ">\n"
@@ -221,87 +248,87 @@
  ">case of peci requests.\n"
  ">\n"
  ">>\n"
- ">> > +???????peci_request_free(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240peci_request_free(req);\n"
  ">> > +\n"
- ">> > +???????return ret;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return ret;\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > +static int peci_device_info_init(struct peci_device *device)\n"
  ">> > +{\n"
- ">> > +???????u8 revision;\n"
- ">> > +???????u32 cpu_id;\n"
- ">> > +???????int ret;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240u8 revision;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240u32 cpu_id;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240int ret;\n"
  ">> > +\n"
- ">> > +???????ret = peci_get_cpu_id(device, &cpu_id);\n"
- ">> > +???????if (ret)\n"
- ">> > +???????????????return ret;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = peci_get_cpu_id(device, &cpu_id);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (ret)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return ret;\n"
  ">> > +\n"
- ">> > +???????device->info.family = x86_family(cpu_id);\n"
- ">> > +???????device->info.model = x86_model(cpu_id);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240device->info.family = x86_family(cpu_id);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240device->info.model = x86_model(cpu_id);\n"
  ">> > +\n"
- ">> > +???????ret = peci_get_revision(device, &revision);\n"
- ">> > +???????if (ret)\n"
- ">> > +???????????????return ret;\n"
- ">> > +???????device->info.peci_revision = revision;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = peci_get_revision(device, &revision);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (ret)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return ret;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240device->info.peci_revision = revision;\n"
  ">> > +\n"
- ">> > +???????device->info.socket_id = device->addr - PECI_BASE_ADDR;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240device->info.socket_id = device->addr - PECI_BASE_ADDR;\n"
  ">> > +\n"
- ">> > +???????return 0;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return 0;\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > static int peci_detect(struct peci_controller *controller, u8 addr)\n"
  ">> > {\n"
- ">> > ????????struct peci_request *req;\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_request *req;\n"
  ">> > @@ -75,6 +143,10 @@ int peci_device_create(struct peci_controller\n"
  ">> > *controller, u8 addr)\n"
- ">> > ????????device->dev.bus = &peci_bus_type;\n"
- ">> > ????????device->dev.type = &peci_device_type;\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240device->dev.bus = &peci_bus_type;\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240device->dev.type = &peci_device_type;\n"
  ">> >\n"
- ">> > +???????ret = peci_device_info_init(device);\n"
- ">> > +???????if (ret)\n"
- ">> > +???????????????goto err_free;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = peci_device_info_init(device);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (ret)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240goto err_free;\n"
  ">> > +\n"
- ">> > ????????ret = dev_set_name(&device->dev, \"%d-%02x\", controller->id, device-\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = dev_set_name(&device->dev, \"%d-%02x\", controller->id, device-\n"
  ">> > >addr);\n"
- ">> > ????????if (ret)\n"
- ">> > ????????????????goto err_free;\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (ret)\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240goto err_free;\n"
  ">> > @@ -98,6 +170,33 @@ void peci_device_destroy(struct peci_device *device)\n"
- ">> > ????????device_unregister(&device->dev);\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240device_unregister(&device->dev);\n"
  ">> > }\n"
  ">> >\n"
  ">> > +int __peci_driver_register(struct peci_driver *driver, struct module\n"
  ">> > *owner,\n"
- ">> > +????????????????????????? const char *mod_name)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 const char *mod_name)\n"
  ">> > +{\n"
- ">> > +???????driver->driver.bus = &peci_bus_type;\n"
- ">> > +???????driver->driver.owner = owner;\n"
- ">> > +???????driver->driver.mod_name = mod_name;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240driver->driver.bus = &peci_bus_type;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240driver->driver.owner = owner;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240driver->driver.mod_name = mod_name;\n"
  ">> > +\n"
- ">> > +???????if (!driver->probe) {\n"
- ">> > +???????????????pr_err(\"peci: trying to register driver without probe\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (!driver->probe) {\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240pr_err(\"peci: trying to register driver without probe\n"
  ">> > callback\\n\");\n"
- ">> > +???????????????return -EINVAL;\n"
- ">> > +???????}\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return -EINVAL;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\n"
  ">> > +\n"
- ">> > +???????if (!driver->id_table) {\n"
- ">> > +???????????????pr_err(\"peci: trying to register driver without device id\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (!driver->id_table) {\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240pr_err(\"peci: trying to register driver without device id\n"
  ">> > table\\n\");\n"
- ">> > +???????????????return -EINVAL;\n"
- ">> > +???????}\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return -EINVAL;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\n"
  ">> > +\n"
- ">> > +???????return driver_register(&driver->driver);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return driver_register(&driver->driver);\n"
  ">> > +}\n"
  ">> > +EXPORT_SYMBOL_NS_GPL(__peci_driver_register, PECI);\n"
  ">> > +\n"
  ">> > +void peci_driver_unregister(struct peci_driver *driver)\n"
  ">> > +{\n"
- ">> > +???????driver_unregister(&driver->driver);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240driver_unregister(&driver->driver);\n"
  ">> > +}\n"
  ">> > +EXPORT_SYMBOL_NS_GPL(peci_driver_unregister, PECI);\n"
  ">> > +\n"
  ">> > static void peci_device_release(struct device *dev)\n"
  ">> > {\n"
- ">> > ????????struct peci_device *device = to_peci_device(dev);\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_device *device = to_peci_device(dev);\n"
  ">> > diff --git a/drivers/peci/internal.h b/drivers/peci/internal.h\n"
  ">> > index 6b139adaf6b8..c891c93e077a 100644\n"
  ">> > --- a/drivers/peci/internal.h\n"
@@ -338,9 +365,9 @@
  ">> > + * @model: device model\n"
  ">> > + */\n"
  ">> > +struct peci_device_id {\n"
- ">> > +???????const void *data;\n"
- ">> > +???????u16 family;\n"
- ">> > +???????u8 model;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240const void *data;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240u16 family;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240u8 model;\n"
  ">> > +};\n"
  ">> > +\n"
  ">> > extern struct device_type peci_device_type;\n"
@@ -358,21 +385,21 @@
  ">> > + * @id_table: PECI device match table to decide which device to bind\n"
  ">> > + */\n"
  ">> > +struct peci_driver {\n"
- ">> > +???????struct device_driver driver;\n"
- ">> > +???????int (*probe)(struct peci_device *device, const struct peci_device_id\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct device_driver driver;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240int (*probe)(struct peci_device *device, const struct peci_device_id\n"
  ">> > *id);\n"
- ">> > +???????void (*remove)(struct peci_device *device);\n"
- ">> > +???????const struct peci_device_id *id_table;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240void (*remove)(struct peci_device *device);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240const struct peci_device_id *id_table;\n"
  ">> > +};\n"
  ">> > +\n"
  ">> > +static inline struct peci_driver *to_peci_driver(struct device_driver *d)\n"
  ">> > +{\n"
- ">> > +???????return container_of(d, struct peci_driver, driver);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return container_of(d, struct peci_driver, driver);\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > +int __peci_driver_register(struct peci_driver *driver, struct module\n"
  ">> > *owner,\n"
- ">> > +????????????????????????? const char *mod_name);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 const char *mod_name);\n"
  ">> > +/**\n"
  ">> > + * peci_driver_register() - register PECI driver\n"
  ">> > + * @driver: the driver to be registered\n"
@@ -386,7 +413,7 @@
  ">> > + * Return: zero on success, else a negative error code.\n"
  ">> > + */\n"
  ">> > +#define peci_driver_register(driver) \\\n"
- ">> > +???????__peci_driver_register(driver, THIS_MODULE, KBUILD_MODNAME)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240__peci_driver_register(driver, THIS_MODULE, KBUILD_MODNAME)\n"
  ">> > +void peci_driver_unregister(struct peci_driver *driver);\n"
  ">> > +\n"
  ">> > +/**\n"
@@ -400,7 +427,7 @@
  ">> > module_exit()\n"
  ">> > + */\n"
  ">> > +#define module_peci_driver(__peci_driver) \\\n"
- ">> > +???????module_driver(__peci_driver, peci_driver_register,\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240module_driver(__peci_driver, peci_driver_register,\n"
  ">> > peci_driver_unregister)\n"
  ">> > +\n"
  ">> > extern struct device_type peci_controller_type;\n"
@@ -424,39 +451,39 @@
  ">> > +\n"
  ">> > #include \"internal.h\"\n"
  ">> >\n"
- ">> > +#define PECI_GET_DIB_CMD???????????????0xf7\n"
- ">> > +#define? PECI_GET_DIB_WR_LEN???????????1\n"
- ">> > +#define? PECI_GET_DIB_RD_LEN???????????8\n"
+ ">> > +#define PECI_GET_DIB_CMD\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400xf7\n"
+ ">> > +#define\302\240 PECI_GET_DIB_WR_LEN\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2401\n"
+ ">> > +#define\302\240 PECI_GET_DIB_RD_LEN\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2408\n"
  ">> > +\n"
- ">> > +#define PECI_RDPKGCFG_CMD??????????????0xa1\n"
- ">> > +#define? PECI_RDPKGCFG_WRITE_LEN???????5\n"
- ">> > +#define? PECI_RDPKGCFG_READ_LEN_BASE???1\n"
- ">> > +#define PECI_WRPKGCFG_CMD??????????????0xa5\n"
- ">> > +#define? PECI_WRPKGCFG_WRITE_LEN_BASE??6\n"
- ">> > +#define? PECI_WRPKGCFG_READ_LEN????????????????1\n"
+ ">> > +#define PECI_RDPKGCFG_CMD\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400xa1\n"
+ ">> > +#define\302\240 PECI_RDPKGCFG_WRITE_LEN\302\240\302\240\302\240\302\240\302\240\302\240\302\2405\n"
+ ">> > +#define\302\240 PECI_RDPKGCFG_READ_LEN_BASE\302\240\302\240\302\2401\n"
+ ">> > +#define PECI_WRPKGCFG_CMD\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400xa5\n"
+ ">> > +#define\302\240 PECI_WRPKGCFG_WRITE_LEN_BASE\302\240\302\2406\n"
+ ">> > +#define\302\240 PECI_WRPKGCFG_READ_LEN\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2401\n"
  ">> > +\n"
  ">> > +/* Device Specific Completion Code (CC) Definition */\n"
- ">> > +#define PECI_CC_SUCCESS????????????????????????????????0x40\n"
- ">> > +#define PECI_CC_NEED_RETRY?????????????????????0x80\n"
- ">> > +#define PECI_CC_OUT_OF_RESOURCE????????????????????????0x81\n"
- ">> > +#define PECI_CC_UNAVAIL_RESOURCE???????????????0x82\n"
- ">> > +#define PECI_CC_INVALID_REQ????????????????????0x90\n"
- ">> > +#define PECI_CC_MCA_ERROR??????????????????????0x91\n"
- ">> > +#define PECI_CC_CATASTROPHIC_MCA_ERROR?????????0x93\n"
- ">> > +#define PECI_CC_FATAL_MCA_ERROR????????????????????????0x94\n"
- ">> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB????????????????0x98\n"
- ">> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB_IERR???0x9B\n"
- ">> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB_MCA????0x9C\n"
- ">> > +\n"
- ">> > +#define PECI_RETRY_BIT?????????????????BIT(0)\n"
- ">> > +\n"
- ">> > +#define PECI_RETRY_TIMEOUT?????????????msecs_to_jiffies(700)\n"
- ">> > +#define PECI_RETRY_INTERVAL_MIN????????????????msecs_to_jiffies(1)\n"
- ">> > +#define PECI_RETRY_INTERVAL_MAX????????????????msecs_to_jiffies(128)\n"
+ ">> > +#define PECI_CC_SUCCESS\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x40\n"
+ ">> > +#define PECI_CC_NEED_RETRY\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x80\n"
+ ">> > +#define PECI_CC_OUT_OF_RESOURCE\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x81\n"
+ ">> > +#define PECI_CC_UNAVAIL_RESOURCE\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x82\n"
+ ">> > +#define PECI_CC_INVALID_REQ\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x90\n"
+ ">> > +#define PECI_CC_MCA_ERROR\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x91\n"
+ ">> > +#define PECI_CC_CATASTROPHIC_MCA_ERROR\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x93\n"
+ ">> > +#define PECI_CC_FATAL_MCA_ERROR\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x94\n"
+ ">> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x98\n"
+ ">> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB_IERR\302\240\302\240\302\2400x9B\n"
+ ">> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB_MCA\302\240\302\240\302\240\302\2400x9C\n"
+ ">> > +\n"
+ ">> > +#define PECI_RETRY_BIT\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240BIT(0)\n"
+ ">> > +\n"
+ ">> > +#define PECI_RETRY_TIMEOUT\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240msecs_to_jiffies(700)\n"
+ ">> > +#define PECI_RETRY_INTERVAL_MIN\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240msecs_to_jiffies(1)\n"
+ ">> > +#define PECI_RETRY_INTERVAL_MAX\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240msecs_to_jiffies(128)\n"
  ">> > +\n"
  ">> > +static u8 peci_request_data_cc(struct peci_request *req)\n"
  ">> > +{\n"
- ">> > +???????return req->rx.buf[0];\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return req->rx.buf[0];\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > +/**\n"
@@ -471,175 +498,175 @@
  ">> > + */\n"
  ">> > +int peci_request_status(struct peci_request *req)\n"
  ">> > +{\n"
- ">> > +???????u8 cc = peci_request_data_cc(req);\n"
- ">> > +\n"
- ">> > +???????if (cc != PECI_CC_SUCCESS)\n"
- ">> > +???????????????dev_dbg(&req->device->dev, \"ret: %#02x\\n\", cc);\n"
- ">> > +\n"
- ">> > +???????switch (cc) {\n"
- ">> > +???????case PECI_CC_SUCCESS:\n"
- ">> > +???????????????return 0;\n"
- ">> > +???????case PECI_CC_NEED_RETRY:\n"
- ">> > +???????case PECI_CC_OUT_OF_RESOURCE:\n"
- ">> > +???????case PECI_CC_UNAVAIL_RESOURCE:\n"
- ">> > +???????????????return -EAGAIN;\n"
- ">> > +???????case PECI_CC_INVALID_REQ:\n"
- ">> > +???????????????return -EINVAL;\n"
- ">> > +???????case PECI_CC_MCA_ERROR:\n"
- ">> > +???????case PECI_CC_CATASTROPHIC_MCA_ERROR:\n"
- ">> > +???????case PECI_CC_FATAL_MCA_ERROR:\n"
- ">> > +???????case PECI_CC_PARITY_ERR_GPSB_OR_PMSB:\n"
- ">> > +???????case PECI_CC_PARITY_ERR_GPSB_OR_PMSB_IERR:\n"
- ">> > +???????case PECI_CC_PARITY_ERR_GPSB_OR_PMSB_MCA:\n"
- ">> > +???????????????return -EIO;\n"
- ">> > +???????}\n"
- ">> > +\n"
- ">> > +???????WARN_ONCE(1, \"Unknown PECI completion code: %#02x\\n\", cc);\n"
- ">> > +\n"
- ">> > +???????return -EIO;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240u8 cc = peci_request_data_cc(req);\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (cc != PECI_CC_SUCCESS)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240dev_dbg(&req->device->dev, \"ret: %#02x\\n\", cc);\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240switch (cc) {\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240case PECI_CC_SUCCESS:\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return 0;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240case PECI_CC_NEED_RETRY:\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240case PECI_CC_OUT_OF_RESOURCE:\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240case PECI_CC_UNAVAIL_RESOURCE:\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return -EAGAIN;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240case PECI_CC_INVALID_REQ:\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return -EINVAL;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240case PECI_CC_MCA_ERROR:\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240case PECI_CC_CATASTROPHIC_MCA_ERROR:\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240case PECI_CC_FATAL_MCA_ERROR:\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240case PECI_CC_PARITY_ERR_GPSB_OR_PMSB:\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240case PECI_CC_PARITY_ERR_GPSB_OR_PMSB_IERR:\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240case PECI_CC_PARITY_ERR_GPSB_OR_PMSB_MCA:\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return -EIO;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240WARN_ONCE(1, \"Unknown PECI completion code: %#02x\\n\", cc);\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return -EIO;\n"
  ">> > +}\n"
  ">> > +EXPORT_SYMBOL_NS_GPL(peci_request_status, PECI);\n"
  ">> > +\n"
  ">> > +static int peci_request_xfer(struct peci_request *req)\n"
  ">> > +{\n"
- ">> > +???????struct peci_device *device = req->device;\n"
- ">> > +???????struct peci_controller *controller = device->controller;\n"
- ">> > +???????int ret;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_device *device = req->device;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_controller *controller = device->controller;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240int ret;\n"
  ">> > +\n"
- ">> > +???????mutex_lock(&controller->bus_lock);\n"
- ">> > +???????ret = controller->xfer(controller, device->addr, req);\n"
- ">> > +???????mutex_unlock(&controller->bus_lock);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240mutex_lock(&controller->bus_lock);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = controller->xfer(controller, device->addr, req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240mutex_unlock(&controller->bus_lock);\n"
  ">> > +\n"
- ">> > +???????return ret;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return ret;\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > +static int peci_request_xfer_retry(struct peci_request *req)\n"
  ">> > +{\n"
- ">> > +???????long wait_interval = PECI_RETRY_INTERVAL_MIN;\n"
- ">> > +???????struct peci_device *device = req->device;\n"
- ">> > +???????struct peci_controller *controller = device->controller;\n"
- ">> > +???????unsigned long start = jiffies;\n"
- ">> > +???????int ret;\n"
- ">> > +\n"
- ">> > +???????/* Don't try to use it for ping */\n"
- ">> > +???????if (WARN_ON(!req->rx.buf))\n"
- ">> > +???????????????return 0;\n"
- ">> > +\n"
- ">> > +???????do {\n"
- ">> > +???????????????ret = peci_request_xfer(req);\n"
- ">> > +???????????????if (ret) {\n"
- ">> > +???????????????????????dev_dbg(&controller->dev, \"xfer error: %d\\n\", ret);\n"
- ">> > +???????????????????????return ret;\n"
- ">> > +???????????????}\n"
- ">> > +\n"
- ">> > +???????????????if (peci_request_status(req) != -EAGAIN)\n"
- ">> > +???????????????????????return 0;\n"
- ">> > +\n"
- ">> > +???????????????/* Set the retry bit to indicate a retry attempt */\n"
- ">> > +???????????????req->tx.buf[1] |= PECI_RETRY_BIT;\n"
- ">> > +\n"
- ">> > +???????????????if (schedule_timeout_interruptible(wait_interval))\n"
- ">> > +???????????????????????return -ERESTARTSYS;\n"
- ">> > +\n"
- ">> > +???????????????wait_interval *= 2;\n"
- ">> > +???????????????if (wait_interval > PECI_RETRY_INTERVAL_MAX)\n"
- ">> > +???????????????????????wait_interval = PECI_RETRY_INTERVAL_MAX;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240long wait_interval = PECI_RETRY_INTERVAL_MIN;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_device *device = req->device;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_controller *controller = device->controller;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240unsigned long start = jiffies;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240int ret;\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240/* Don't try to use it for ping */\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (WARN_ON(!req->rx.buf))\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return 0;\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240do {\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = peci_request_xfer(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (ret) {\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240dev_dbg(&controller->dev, \"xfer error: %d\\n\", ret);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return ret;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (peci_request_status(req) != -EAGAIN)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return 0;\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240/* Set the retry bit to indicate a retry attempt */\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240req->tx.buf[1] |= PECI_RETRY_BIT;\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (schedule_timeout_interruptible(wait_interval))\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return -ERESTARTSYS;\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240wait_interval *= 2;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (wait_interval > PECI_RETRY_INTERVAL_MAX)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240wait_interval = PECI_RETRY_INTERVAL_MAX;\n"
  ">>\n"
  ">> wait_interval = min(wait_interval * 2, PECI_RETRY_INTERVAL_MAX) ?\n"
  ">\n"
  ">Ack.\n"
  ">\n"
  ">>\n"
- ">> > +???????} while (time_before(jiffies, start + PECI_RETRY_TIMEOUT));\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240} while (time_before(jiffies, start + PECI_RETRY_TIMEOUT));\n"
  ">> > +\n"
- ">> > +???????dev_dbg(&controller->dev, \"request timed out\\n\");\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240dev_dbg(&controller->dev, \"request timed out\\n\");\n"
  ">> > +\n"
- ">> > +???????return -ETIMEDOUT;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return -ETIMEDOUT;\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > /**\n"
- ">> > ?* peci_request_alloc() - allocate &struct peci_request with buffers with\n"
+ ">> > \302\240* peci_request_alloc() - allocate &struct peci_request with buffers with\n"
  ">> > given lengths\n"
- ">> > ?* @device: PECI device to which request is going to be sent\n"
+ ">> > \302\240* @device: PECI device to which request is going to be sent\n"
  ">> > @@ -72,3 +201,91 @@ void peci_request_free(struct peci_request *req)\n"
- ">> > ????????kfree(req);\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240kfree(req);\n"
  ">> > }\n"
  ">> > EXPORT_SYMBOL_NS_GPL(peci_request_free, PECI);\n"
  ">> > +\n"
  ">> > +struct peci_request *peci_get_dib(struct peci_device *device)\n"
  ">> > +{\n"
- ">> > +???????struct peci_request *req;\n"
- ">> > +???????int ret;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_request *req;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240int ret;\n"
  ">> > +\n"
- ">> > +???????req = peci_request_alloc(device, PECI_GET_DIB_WR_LEN,\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240req = peci_request_alloc(device, PECI_GET_DIB_WR_LEN,\n"
  ">> > PECI_GET_DIB_RD_LEN);\n"
- ">> > +???????if (!req)\n"
- ">> > +???????????????return ERR_PTR(-ENOMEM);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (!req)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return ERR_PTR(-ENOMEM);\n"
  ">> > +\n"
- ">> > +???????req->tx.buf[0] = PECI_GET_DIB_CMD;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240req->tx.buf[0] = PECI_GET_DIB_CMD;\n"
  ">> > +\n"
- ">> > +???????ret = peci_request_xfer(req);\n"
- ">> > +???????if (ret) {\n"
- ">> > +???????????????peci_request_free(req);\n"
- ">> > +???????????????return ERR_PTR(ret);\n"
- ">> > +???????}\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = peci_request_xfer(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (ret) {\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240peci_request_free(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return ERR_PTR(ret);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\n"
  ">> > +\n"
- ">> > +???????return req;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return req;\n"
  ">> > +}\n"
  ">> > +EXPORT_SYMBOL_NS_GPL(peci_get_dib, PECI);\n"
  ">> > +\n"
  ">> > +static struct peci_request *\n"
  ">> > +__pkg_cfg_read(struct peci_device *device, u8 index, u16 param, u8 len)\n"
  ">> > +{\n"
- ">> > +???????struct peci_request *req;\n"
- ">> > +???????int ret;\n"
- ">> > +\n"
- ">> > +???????req = peci_request_alloc(device, PECI_RDPKGCFG_WRITE_LEN,\n"
- ">> > +??????????????????????????????? PECI_RDPKGCFG_READ_LEN_BASE + len);\n"
- ">> > +???????if (!req)\n"
- ">> > +???????????????return ERR_PTR(-ENOMEM);\n"
- ">> > +\n"
- ">> > +???????req->tx.buf[0] = PECI_RDPKGCFG_CMD;\n"
- ">> > +???????req->tx.buf[1] = 0;\n"
- ">> > +???????req->tx.buf[2] = index;\n"
- ">> > +???????put_unaligned_le16(param, &req->tx.buf[3]);\n"
- ">> > +\n"
- ">> > +???????ret = peci_request_xfer_retry(req);\n"
- ">> > +???????if (ret) {\n"
- ">> > +???????????????peci_request_free(req);\n"
- ">> > +???????????????return ERR_PTR(ret);\n"
- ">> > +???????}\n"
- ">> > +\n"
- ">> > +???????return req;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_request *req;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240int ret;\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240req = peci_request_alloc(device, PECI_RDPKGCFG_WRITE_LEN,\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 PECI_RDPKGCFG_READ_LEN_BASE + len);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (!req)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return ERR_PTR(-ENOMEM);\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240req->tx.buf[0] = PECI_RDPKGCFG_CMD;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240req->tx.buf[1] = 0;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240req->tx.buf[2] = index;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240put_unaligned_le16(param, &req->tx.buf[3]);\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = peci_request_xfer_retry(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (ret) {\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240peci_request_free(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return ERR_PTR(ret);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return req;\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > +u8 peci_request_data_readb(struct peci_request *req)\n"
  ">> > +{\n"
- ">> > +???????return req->rx.buf[1];\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return req->rx.buf[1];\n"
  ">> > +}\n"
  ">> > +EXPORT_SYMBOL_NS_GPL(peci_request_data_readb, PECI);\n"
  ">> > +\n"
  ">> > +u16 peci_request_data_readw(struct peci_request *req)\n"
  ">> > +{\n"
- ">> > +???????return get_unaligned_le16(&req->rx.buf[1]);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return get_unaligned_le16(&req->rx.buf[1]);\n"
  ">> > +}\n"
  ">> > +EXPORT_SYMBOL_NS_GPL(peci_request_data_readw, PECI);\n"
  ">> > +\n"
  ">> > +u32 peci_request_data_readl(struct peci_request *req)\n"
  ">> > +{\n"
- ">> > +???????return get_unaligned_le32(&req->rx.buf[1]);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return get_unaligned_le32(&req->rx.buf[1]);\n"
  ">> > +}\n"
  ">> > +EXPORT_SYMBOL_NS_GPL(peci_request_data_readl, PECI);\n"
  ">> > +\n"
  ">> > +u64 peci_request_data_readq(struct peci_request *req)\n"
  ">> > +{\n"
- ">> > +???????return get_unaligned_le64(&req->rx.buf[1]);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return get_unaligned_le64(&req->rx.buf[1]);\n"
  ">> > +}\n"
  ">> > +EXPORT_SYMBOL_NS_GPL(peci_request_data_readq, PECI);\n"
  ">> > +\n"
  ">> > +u64 peci_request_data_dib(struct peci_request *req)\n"
  ">> > +{\n"
- ">> > +???????return get_unaligned_le64(&req->rx.buf[0]);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return get_unaligned_le64(&req->rx.buf[0]);\n"
  ">> > +}\n"
  ">> > +EXPORT_SYMBOL_NS_GPL(peci_request_data_dib, PECI);\n"
  ">> > +\n"
@@ -647,10 +674,10 @@
  ">> > +struct peci_request *peci_pkg_cfg_##x(struct peci_device *device, u8 index,\n"
  ">> > u16 param) \\\n"
  ">> > +{ \\\n"
- ">> > +???????return __pkg_cfg_read(device, index, param, sizeof(type)); \\\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return __pkg_cfg_read(device, index, param, sizeof(type)); \\\n"
  ">> > +} \\\n"
  ">>\n"
- ">> Is there a reason for this particular API?? I'd think a more natural one\n"
+ ">> Is there a reason for this particular API?\302\240 I'd think a more natural one\n"
  ">> that would offload a bit of boilerplate from callers would look more like\n"
  ">>\n"
  ">> int peci_pkg_cfg_##x(struct peci_device *device, u8 index, u16 param, type\n"
@@ -682,42 +709,42 @@
  ">> > #include <linux/mutex.h>\n"
  ">> > #include <linux/types.h>\n"
  ">> >\n"
- ">> > +#define PECI_PCS_PKG_ID????????????????????????0? /* Package Identifier\n"
+ ">> > +#define PECI_PCS_PKG_ID\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400\302\240 /* Package Identifier\n"
  ">> > Read */\n"
- ">> > +#define? PECI_PKG_ID_CPU_ID????????????0x0000? /* CPUID Info */\n"
- ">> > +#define? PECI_PKG_ID_PLATFORM_ID???????0x0001? /* Platform ID */\n"
- ">> > +#define? PECI_PKG_ID_DEVICE_ID?????????0x0002? /* Uncore Device ID */\n"
- ">> > +#define? PECI_PKG_ID_MAX_THREAD_ID?????0x0003? /* Max Thread ID */\n"
- ">> > +#define? PECI_PKG_ID_MICROCODE_REV?????0x0004? /* CPU Microcode Update\n"
+ ">> > +#define\302\240 PECI_PKG_ID_CPU_ID\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x0000\302\240 /* CPUID Info */\n"
+ ">> > +#define\302\240 PECI_PKG_ID_PLATFORM_ID\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x0001\302\240 /* Platform ID */\n"
+ ">> > +#define\302\240 PECI_PKG_ID_DEVICE_ID\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x0002\302\240 /* Uncore Device ID */\n"
+ ">> > +#define\302\240 PECI_PKG_ID_MAX_THREAD_ID\302\240\302\240\302\240\302\240\302\2400x0003\302\240 /* Max Thread ID */\n"
+ ">> > +#define\302\240 PECI_PKG_ID_MICROCODE_REV\302\240\302\240\302\240\302\240\302\2400x0004\302\240 /* CPU Microcode Update\n"
  ">> > Revision */\n"
- ">> > +#define? PECI_PKG_ID_MCA_ERROR_LOG?????0x0005? /* Machine Check Status */\n"
+ ">> > +#define\302\240 PECI_PKG_ID_MCA_ERROR_LOG\302\240\302\240\302\240\302\240\302\2400x0005\302\240 /* Machine Check Status */\n"
  ">> > +\n"
  ">> > struct peci_request;\n"
  ">> >\n"
  ">> > /**\n"
  ">> > @@ -41,6 +49,11 @@ static inline struct peci_controller\n"
  ">> > *to_peci_controller(void *d)\n"
- ">> > ?* struct peci_device - PECI device\n"
- ">> > ?* @dev: device object to register PECI device to the device model\n"
- ">> > ?* @controller: manages the bus segment hosting this PECI device\n"
+ ">> > \302\240* struct peci_device - PECI device\n"
+ ">> > \302\240* @dev: device object to register PECI device to the device model\n"
+ ">> > \302\240* @controller: manages the bus segment hosting this PECI device\n"
  ">> > + * @info: PECI device characteristics\n"
  ">> > + * @info.family: device family\n"
  ">> > + * @info.model: device model\n"
  ">> > + * @info.peci_revision: PECI revision supported by the PECI device\n"
  ">> > + * @info.socket_id: the socket ID represented by the PECI device\n"
- ">> > ?* @addr: address used on the PECI bus connected to the parent controller\n"
- ">> > ?*\n"
- ">> > ?* A peci_device identifies a single device (i.e. CPU) connected to a PECI\n"
+ ">> > \302\240* @addr: address used on the PECI bus connected to the parent controller\n"
+ ">> > \302\240*\n"
+ ">> > \302\240* A peci_device identifies a single device (i.e. CPU) connected to a PECI\n"
  ">> > bus.\n"
  ">> > @@ -50,6 +63,12 @@ static inline struct peci_controller\n"
  ">> > *to_peci_controller(void *d)\n"
  ">> > struct peci_device {\n"
- ">> > ????????struct device dev;\n"
- ">> > ????????struct peci_controller *controller;\n"
- ">> > +???????struct {\n"
- ">> > +???????????????u16 family;\n"
- ">> > +???????????????u8 model;\n"
- ">> > +???????????????u8 peci_revision;\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct device dev;\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_controller *controller;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct {\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240u16 family;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240u8 model;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240u8 peci_revision;\n"
  ">>\n"
  ">> This field gets set but doesn't seem to end up used anywhere; is it\n"
  ">> useful?\n"
@@ -732,9 +759,9 @@
  ">-Iwona\n"
  ">\n"
  ">>\n"
- ">> > +???????????????u8 socket_id;\n"
- ">> > +???????} info;\n"
- ">> > ????????u8 addr;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240u8 socket_id;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240} info;\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240u8 addr;\n"
  ">> > };\n"
  ">> >\n"
  ">> > diff --git a/lib/Kconfig b/lib/Kconfig\n"
@@ -744,12 +771,12 @@
  ">> > @@ -721,5 +721,5 @@ config ASN1_ENCODER\n"
  ">> >\n"
  ">> > config GENERIC_LIB_X86\n"
- ">> > ????????bool\n"
- ">> > -???????depends on X86\n"
- ">> > +???????depends on X86 || PECI\n"
- ">> > ????????default n\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240bool\n"
+ ">> > -\302\240\302\240\302\240\302\240\302\240\302\240\302\240depends on X86\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240depends on X86 || PECI\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240default n\n"
  ">> > --\n"
  ">> > 2.31.1\n"
  >
 
-59cebbc101d3bc33ab3be319d67420d863e647d7adc3ae35d9c3e03b17c38743
+c6a46abe805af26bebab2f6cb862732ff0a3f0c55d3a1bb6047a96bc74e5258d

diff --git a/a/1.txt b/N2/1.txt
index bd6a626..e19b964 100644
--- a/a/1.txt
+++ b/N2/1.txt
@@ -12,13 +12,13 @@ On Thu, Jul 29, 2021 at 04:17:06PM CDT, Winiarska, Iwona wrote:
 >> > Signed-off-by: Iwona Winiarska <iwona.winiarska@intel.com>
 >> > Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
 >> > ---
->> > drivers/peci/Kconfig??? |?? 1 +
->> > drivers/peci/core.c???? |? 49 +++++++++
->> > drivers/peci/device.c?? |? 99 ++++++++++++++++++
->> > drivers/peci/internal.h |? 75 ++++++++++++++
->> > drivers/peci/request.c? | 217 ++++++++++++++++++++++++++++++++++++++++
->> > include/linux/peci.h??? |? 19 ++++
->> > lib/Kconfig???????????? |?? 2 +-
+>> > drivers/peci/Kconfig    |   1 +
+>> > drivers/peci/core.c     |  49 +++++++++
+>> > drivers/peci/device.c   |  99 ++++++++++++++++++
+>> > drivers/peci/internal.h |  75 ++++++++++++++
+>> > drivers/peci/request.c  | 217 ++++++++++++++++++++++++++++++++++++++++
+>> > include/linux/peci.h    |  19 ++++
+>> > lib/Kconfig             |   2 +-
 >> > 7 files changed, 461 insertions(+), 1 deletion(-)
 >> >
 >> > diff --git a/drivers/peci/Kconfig b/drivers/peci/Kconfig
@@ -28,11 +28,11 @@ On Thu, Jul 29, 2021 at 04:17:06PM CDT, Winiarska, Iwona wrote:
 >> > @@ -2,6 +2,7 @@
 >> >
 >> > menuconfig PECI
->> > ????????tristate "PECI support"
->> > +???????select GENERIC_LIB_X86
->> > ????????help
->> > ????????? The Platform Environment Control Interface (PECI) is an interface
->> > ????????? that provides a communication channel to Intel processors and
+>> >         tristate "PECI support"
+>> > +       select GENERIC_LIB_X86
+>> >         help
+>> >           The Platform Environment Control Interface (PECI) is an interface
+>> >           that provides a communication channel to Intel processors and
 >> > diff --git a/drivers/peci/core.c b/drivers/peci/core.c
 >> > index ae7a9572cdf3..94426b7f2618 100644
 >> > --- a/drivers/peci/core.c
@@ -46,57 +46,57 @@ On Thu, Jul 29, 2021 at 04:17:06PM CDT, Winiarska, Iwona wrote:
 >> > +peci_bus_match_device_id(const struct peci_device_id *id, struct
 >> > peci_device *device)
 >> > +{
->> > +???????while (id->family != 0) {
->> > +???????????????if (id->family == device->info.family &&
->> > +?????????????????? id->model == device->info.model)
->> > +???????????????????????return id;
->> > +???????????????id++;
->> > +???????}
->> > +
->> > +???????return NULL;
+>> > +       while (id->family != 0) {
+>> > +               if (id->family == device->info.family &&
+>> > +                   id->model == device->info.model)
+>> > +                       return id;
+>> > +               id++;
+>> > +       }
+>> > +
+>> > +       return NULL;
 >> > +}
 >> > +
 >> > +static int peci_bus_device_match(struct device *dev, struct device_driver
 >> > *drv)
 >> > +{
->> > +???????struct peci_device *device = to_peci_device(dev);
->> > +???????struct peci_driver *peci_drv = to_peci_driver(drv);
+>> > +       struct peci_device *device = to_peci_device(dev);
+>> > +       struct peci_driver *peci_drv = to_peci_driver(drv);
 >> > +
->> > +???????if (dev->type != &peci_device_type)
->> > +???????????????return 0;
+>> > +       if (dev->type != &peci_device_type)
+>> > +               return 0;
 >> > +
->> > +???????if (peci_bus_match_device_id(peci_drv->id_table, device))
->> > +???????????????return 1;
+>> > +       if (peci_bus_match_device_id(peci_drv->id_table, device))
+>> > +               return 1;
 >> > +
->> > +???????return 0;
+>> > +       return 0;
 >> > +}
 >> > +
 >> > +static int peci_bus_device_probe(struct device *dev)
 >> > +{
->> > +???????struct peci_device *device = to_peci_device(dev);
->> > +???????struct peci_driver *driver = to_peci_driver(dev->driver);
+>> > +       struct peci_device *device = to_peci_device(dev);
+>> > +       struct peci_driver *driver = to_peci_driver(dev->driver);
 >> > +
->> > +???????return driver->probe(device, peci_bus_match_device_id(driver-
+>> > +       return driver->probe(device, peci_bus_match_device_id(driver-
 >> > >id_table, device));
 >> > +}
 >> > +
 >> > +static int peci_bus_device_remove(struct device *dev)
 >> > +{
->> > +???????struct peci_device *device = to_peci_device(dev);
->> > +???????struct peci_driver *driver = to_peci_driver(dev->driver);
+>> > +       struct peci_device *device = to_peci_device(dev);
+>> > +       struct peci_driver *driver = to_peci_driver(dev->driver);
 >> > +
->> > +???????if (driver->remove)
->> > +???????????????driver->remove(device);
+>> > +       if (driver->remove)
+>> > +               driver->remove(device);
 >> > +
->> > +???????return 0;
+>> > +       return 0;
 >> > +}
 >> > +
 >> > struct bus_type peci_bus_type = {
->> > ????????.name???????????= "peci",
->> > +???????.match??????????= peci_bus_device_match,
->> > +???????.probe??????????= peci_bus_device_probe,
->> > +???????.remove?????????= peci_bus_device_remove,
->> > ????????.bus_groups?????= peci_bus_groups,
+>> >         .name           = "peci",
+>> > +       .match          = peci_bus_device_match,
+>> > +       .probe          = peci_bus_device_probe,
+>> > +       .remove         = peci_bus_device_remove,
+>> >         .bus_groups     = peci_bus_groups,
 >> > };
 >> >
 >> > diff --git a/drivers/peci/device.c b/drivers/peci/device.c
@@ -117,19 +117,19 @@ On Thu, Jul 29, 2021 at 04:17:06PM CDT, Winiarska, Iwona wrote:
 >> > +#define REVISION_NUM_MASK GENMASK(15, 8)
 >> > +static int peci_get_revision(struct peci_device *device, u8 *revision)
 >> > +{
->> > +???????struct peci_request *req;
->> > +???????u64 dib;
+>> > +       struct peci_request *req;
+>> > +       u64 dib;
 >> > +
->> > +???????req = peci_get_dib(device);
->> > +???????if (IS_ERR(req))
->> > +???????????????return PTR_ERR(req);
+>> > +       req = peci_get_dib(device);
+>> > +       if (IS_ERR(req))
+>> > +               return PTR_ERR(req);
 >> > +
->> > +???????dib = peci_request_data_dib(req);
->> > +???????if (dib == 0) {
->> > +???????????????peci_request_free(req);
->> > +???????????????return -EIO;
+>> > +       dib = peci_request_data_dib(req);
+>> > +       if (dib == 0) {
+>> > +               peci_request_free(req);
+>> > +               return -EIO;
 >>
->> Any particular reason to check for zero specifically here?? It looks
+>> Any particular reason to check for zero specifically here?  It looks
 >> like that would be a case where the host CPU responds and everything's
 >> otherwise fine, but the host just happened to send back a bunch of zeros
 >> for whatever reason -- which may not be a valid PECI revision number,
@@ -169,30 +169,30 @@ I suppose it facilitates an easy zero check, but that could also be
 written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 
 >>
->> > +???????}
+>> > +       }
 >> > +
->> > +???????*revision = FIELD_GET(REVISION_NUM_MASK, dib);
+>> > +       *revision = FIELD_GET(REVISION_NUM_MASK, dib);
 >> > +
->> > +???????peci_request_free(req);
+>> > +       peci_request_free(req);
 >> > +
->> > +???????return 0;
+>> > +       return 0;
 >> > +}
 >> > +
 >> > +static int peci_get_cpu_id(struct peci_device *device, u32 *cpu_id)
 >> > +{
->> > +???????struct peci_request *req;
->> > +???????int ret;
+>> > +       struct peci_request *req;
+>> > +       int ret;
 >> > +
->> > +???????req = peci_pkg_cfg_readl(device, PECI_PCS_PKG_ID,
+>> > +       req = peci_pkg_cfg_readl(device, PECI_PCS_PKG_ID,
 >> > PECI_PKG_ID_CPU_ID);
->> > +???????if (IS_ERR(req))
->> > +???????????????return PTR_ERR(req);
+>> > +       if (IS_ERR(req))
+>> > +               return PTR_ERR(req);
 >> > +
->> > +???????ret = peci_request_status(req);
->> > +???????if (ret)
->> > +???????????????goto out_req_free;
+>> > +       ret = peci_request_status(req);
+>> > +       if (ret)
+>> > +               goto out_req_free;
 >> > +
->> > +???????*cpu_id = peci_request_data_readl(req);
+>> > +       *cpu_id = peci_request_data_readl(req);
 >> > +out_req_free:
 >>
 >> As suggested on patch #8, I think it might be cleaner to stack-allocate
@@ -200,8 +200,8 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >> calls in functions like this and hence might simplify it away entirely,
 >> but if this does remain like this we could just do
 >>
->> ????????if (!ret)
->> ????????????????*cpu_id = peci_request_data_readl(req);
+>>         if (!ret)
+>>                 *cpu_id = peci_request_data_readl(req);
 >>
 >> instead of using a goto to skip a single line.
 >
@@ -211,87 +211,87 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >case of peci requests.
 >
 >>
->> > +???????peci_request_free(req);
+>> > +       peci_request_free(req);
 >> > +
->> > +???????return ret;
+>> > +       return ret;
 >> > +}
 >> > +
 >> > +static int peci_device_info_init(struct peci_device *device)
 >> > +{
->> > +???????u8 revision;
->> > +???????u32 cpu_id;
->> > +???????int ret;
+>> > +       u8 revision;
+>> > +       u32 cpu_id;
+>> > +       int ret;
 >> > +
->> > +???????ret = peci_get_cpu_id(device, &cpu_id);
->> > +???????if (ret)
->> > +???????????????return ret;
+>> > +       ret = peci_get_cpu_id(device, &cpu_id);
+>> > +       if (ret)
+>> > +               return ret;
 >> > +
->> > +???????device->info.family = x86_family(cpu_id);
->> > +???????device->info.model = x86_model(cpu_id);
+>> > +       device->info.family = x86_family(cpu_id);
+>> > +       device->info.model = x86_model(cpu_id);
 >> > +
->> > +???????ret = peci_get_revision(device, &revision);
->> > +???????if (ret)
->> > +???????????????return ret;
->> > +???????device->info.peci_revision = revision;
+>> > +       ret = peci_get_revision(device, &revision);
+>> > +       if (ret)
+>> > +               return ret;
+>> > +       device->info.peci_revision = revision;
 >> > +
->> > +???????device->info.socket_id = device->addr - PECI_BASE_ADDR;
+>> > +       device->info.socket_id = device->addr - PECI_BASE_ADDR;
 >> > +
->> > +???????return 0;
+>> > +       return 0;
 >> > +}
 >> > +
 >> > static int peci_detect(struct peci_controller *controller, u8 addr)
 >> > {
->> > ????????struct peci_request *req;
+>> >         struct peci_request *req;
 >> > @@ -75,6 +143,10 @@ int peci_device_create(struct peci_controller
 >> > *controller, u8 addr)
->> > ????????device->dev.bus = &peci_bus_type;
->> > ????????device->dev.type = &peci_device_type;
+>> >         device->dev.bus = &peci_bus_type;
+>> >         device->dev.type = &peci_device_type;
 >> >
->> > +???????ret = peci_device_info_init(device);
->> > +???????if (ret)
->> > +???????????????goto err_free;
+>> > +       ret = peci_device_info_init(device);
+>> > +       if (ret)
+>> > +               goto err_free;
 >> > +
->> > ????????ret = dev_set_name(&device->dev, "%d-%02x", controller->id, device-
+>> >         ret = dev_set_name(&device->dev, "%d-%02x", controller->id, device-
 >> > >addr);
->> > ????????if (ret)
->> > ????????????????goto err_free;
+>> >         if (ret)
+>> >                 goto err_free;
 >> > @@ -98,6 +170,33 @@ void peci_device_destroy(struct peci_device *device)
->> > ????????device_unregister(&device->dev);
+>> >         device_unregister(&device->dev);
 >> > }
 >> >
 >> > +int __peci_driver_register(struct peci_driver *driver, struct module
 >> > *owner,
->> > +????????????????????????? const char *mod_name)
+>> > +                          const char *mod_name)
 >> > +{
->> > +???????driver->driver.bus = &peci_bus_type;
->> > +???????driver->driver.owner = owner;
->> > +???????driver->driver.mod_name = mod_name;
+>> > +       driver->driver.bus = &peci_bus_type;
+>> > +       driver->driver.owner = owner;
+>> > +       driver->driver.mod_name = mod_name;
 >> > +
->> > +???????if (!driver->probe) {
->> > +???????????????pr_err("peci: trying to register driver without probe
+>> > +       if (!driver->probe) {
+>> > +               pr_err("peci: trying to register driver without probe
 >> > callback\n");
->> > +???????????????return -EINVAL;
->> > +???????}
+>> > +               return -EINVAL;
+>> > +       }
 >> > +
->> > +???????if (!driver->id_table) {
->> > +???????????????pr_err("peci: trying to register driver without device id
+>> > +       if (!driver->id_table) {
+>> > +               pr_err("peci: trying to register driver without device id
 >> > table\n");
->> > +???????????????return -EINVAL;
->> > +???????}
+>> > +               return -EINVAL;
+>> > +       }
 >> > +
->> > +???????return driver_register(&driver->driver);
+>> > +       return driver_register(&driver->driver);
 >> > +}
 >> > +EXPORT_SYMBOL_NS_GPL(__peci_driver_register, PECI);
 >> > +
 >> > +void peci_driver_unregister(struct peci_driver *driver)
 >> > +{
->> > +???????driver_unregister(&driver->driver);
+>> > +       driver_unregister(&driver->driver);
 >> > +}
 >> > +EXPORT_SYMBOL_NS_GPL(peci_driver_unregister, PECI);
 >> > +
 >> > static void peci_device_release(struct device *dev)
 >> > {
->> > ????????struct peci_device *device = to_peci_device(dev);
+>> >         struct peci_device *device = to_peci_device(dev);
 >> > diff --git a/drivers/peci/internal.h b/drivers/peci/internal.h
 >> > index 6b139adaf6b8..c891c93e077a 100644
 >> > --- a/drivers/peci/internal.h
@@ -328,9 +328,9 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >> > + * @model: device model
 >> > + */
 >> > +struct peci_device_id {
->> > +???????const void *data;
->> > +???????u16 family;
->> > +???????u8 model;
+>> > +       const void *data;
+>> > +       u16 family;
+>> > +       u8 model;
 >> > +};
 >> > +
 >> > extern struct device_type peci_device_type;
@@ -348,21 +348,21 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >> > + * @id_table: PECI device match table to decide which device to bind
 >> > + */
 >> > +struct peci_driver {
->> > +???????struct device_driver driver;
->> > +???????int (*probe)(struct peci_device *device, const struct peci_device_id
+>> > +       struct device_driver driver;
+>> > +       int (*probe)(struct peci_device *device, const struct peci_device_id
 >> > *id);
->> > +???????void (*remove)(struct peci_device *device);
->> > +???????const struct peci_device_id *id_table;
+>> > +       void (*remove)(struct peci_device *device);
+>> > +       const struct peci_device_id *id_table;
 >> > +};
 >> > +
 >> > +static inline struct peci_driver *to_peci_driver(struct device_driver *d)
 >> > +{
->> > +???????return container_of(d, struct peci_driver, driver);
+>> > +       return container_of(d, struct peci_driver, driver);
 >> > +}
 >> > +
 >> > +int __peci_driver_register(struct peci_driver *driver, struct module
 >> > *owner,
->> > +????????????????????????? const char *mod_name);
+>> > +                          const char *mod_name);
 >> > +/**
 >> > + * peci_driver_register() - register PECI driver
 >> > + * @driver: the driver to be registered
@@ -376,7 +376,7 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >> > + * Return: zero on success, else a negative error code.
 >> > + */
 >> > +#define peci_driver_register(driver) \
->> > +???????__peci_driver_register(driver, THIS_MODULE, KBUILD_MODNAME)
+>> > +       __peci_driver_register(driver, THIS_MODULE, KBUILD_MODNAME)
 >> > +void peci_driver_unregister(struct peci_driver *driver);
 >> > +
 >> > +/**
@@ -390,7 +390,7 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >> > module_exit()
 >> > + */
 >> > +#define module_peci_driver(__peci_driver) \
->> > +???????module_driver(__peci_driver, peci_driver_register,
+>> > +       module_driver(__peci_driver, peci_driver_register,
 >> > peci_driver_unregister)
 >> > +
 >> > extern struct device_type peci_controller_type;
@@ -414,39 +414,39 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >> > +
 >> > #include "internal.h"
 >> >
->> > +#define PECI_GET_DIB_CMD???????????????0xf7
->> > +#define? PECI_GET_DIB_WR_LEN???????????1
->> > +#define? PECI_GET_DIB_RD_LEN???????????8
+>> > +#define PECI_GET_DIB_CMD               0xf7
+>> > +#define  PECI_GET_DIB_WR_LEN           1
+>> > +#define  PECI_GET_DIB_RD_LEN           8
 >> > +
->> > +#define PECI_RDPKGCFG_CMD??????????????0xa1
->> > +#define? PECI_RDPKGCFG_WRITE_LEN???????5
->> > +#define? PECI_RDPKGCFG_READ_LEN_BASE???1
->> > +#define PECI_WRPKGCFG_CMD??????????????0xa5
->> > +#define? PECI_WRPKGCFG_WRITE_LEN_BASE??6
->> > +#define? PECI_WRPKGCFG_READ_LEN????????????????1
+>> > +#define PECI_RDPKGCFG_CMD              0xa1
+>> > +#define  PECI_RDPKGCFG_WRITE_LEN       5
+>> > +#define  PECI_RDPKGCFG_READ_LEN_BASE   1
+>> > +#define PECI_WRPKGCFG_CMD              0xa5
+>> > +#define  PECI_WRPKGCFG_WRITE_LEN_BASE  6
+>> > +#define  PECI_WRPKGCFG_READ_LEN                1
 >> > +
 >> > +/* Device Specific Completion Code (CC) Definition */
->> > +#define PECI_CC_SUCCESS????????????????????????????????0x40
->> > +#define PECI_CC_NEED_RETRY?????????????????????0x80
->> > +#define PECI_CC_OUT_OF_RESOURCE????????????????????????0x81
->> > +#define PECI_CC_UNAVAIL_RESOURCE???????????????0x82
->> > +#define PECI_CC_INVALID_REQ????????????????????0x90
->> > +#define PECI_CC_MCA_ERROR??????????????????????0x91
->> > +#define PECI_CC_CATASTROPHIC_MCA_ERROR?????????0x93
->> > +#define PECI_CC_FATAL_MCA_ERROR????????????????????????0x94
->> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB????????????????0x98
->> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB_IERR???0x9B
->> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB_MCA????0x9C
->> > +
->> > +#define PECI_RETRY_BIT?????????????????BIT(0)
->> > +
->> > +#define PECI_RETRY_TIMEOUT?????????????msecs_to_jiffies(700)
->> > +#define PECI_RETRY_INTERVAL_MIN????????????????msecs_to_jiffies(1)
->> > +#define PECI_RETRY_INTERVAL_MAX????????????????msecs_to_jiffies(128)
+>> > +#define PECI_CC_SUCCESS                                0x40
+>> > +#define PECI_CC_NEED_RETRY                     0x80
+>> > +#define PECI_CC_OUT_OF_RESOURCE                        0x81
+>> > +#define PECI_CC_UNAVAIL_RESOURCE               0x82
+>> > +#define PECI_CC_INVALID_REQ                    0x90
+>> > +#define PECI_CC_MCA_ERROR                      0x91
+>> > +#define PECI_CC_CATASTROPHIC_MCA_ERROR         0x93
+>> > +#define PECI_CC_FATAL_MCA_ERROR                        0x94
+>> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB                0x98
+>> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB_IERR   0x9B
+>> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB_MCA    0x9C
+>> > +
+>> > +#define PECI_RETRY_BIT                 BIT(0)
+>> > +
+>> > +#define PECI_RETRY_TIMEOUT             msecs_to_jiffies(700)
+>> > +#define PECI_RETRY_INTERVAL_MIN                msecs_to_jiffies(1)
+>> > +#define PECI_RETRY_INTERVAL_MAX                msecs_to_jiffies(128)
 >> > +
 >> > +static u8 peci_request_data_cc(struct peci_request *req)
 >> > +{
->> > +???????return req->rx.buf[0];
+>> > +       return req->rx.buf[0];
 >> > +}
 >> > +
 >> > +/**
@@ -461,175 +461,175 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >> > + */
 >> > +int peci_request_status(struct peci_request *req)
 >> > +{
->> > +???????u8 cc = peci_request_data_cc(req);
->> > +
->> > +???????if (cc != PECI_CC_SUCCESS)
->> > +???????????????dev_dbg(&req->device->dev, "ret: %#02x\n", cc);
->> > +
->> > +???????switch (cc) {
->> > +???????case PECI_CC_SUCCESS:
->> > +???????????????return 0;
->> > +???????case PECI_CC_NEED_RETRY:
->> > +???????case PECI_CC_OUT_OF_RESOURCE:
->> > +???????case PECI_CC_UNAVAIL_RESOURCE:
->> > +???????????????return -EAGAIN;
->> > +???????case PECI_CC_INVALID_REQ:
->> > +???????????????return -EINVAL;
->> > +???????case PECI_CC_MCA_ERROR:
->> > +???????case PECI_CC_CATASTROPHIC_MCA_ERROR:
->> > +???????case PECI_CC_FATAL_MCA_ERROR:
->> > +???????case PECI_CC_PARITY_ERR_GPSB_OR_PMSB:
->> > +???????case PECI_CC_PARITY_ERR_GPSB_OR_PMSB_IERR:
->> > +???????case PECI_CC_PARITY_ERR_GPSB_OR_PMSB_MCA:
->> > +???????????????return -EIO;
->> > +???????}
->> > +
->> > +???????WARN_ONCE(1, "Unknown PECI completion code: %#02x\n", cc);
->> > +
->> > +???????return -EIO;
+>> > +       u8 cc = peci_request_data_cc(req);
+>> > +
+>> > +       if (cc != PECI_CC_SUCCESS)
+>> > +               dev_dbg(&req->device->dev, "ret: %#02x\n", cc);
+>> > +
+>> > +       switch (cc) {
+>> > +       case PECI_CC_SUCCESS:
+>> > +               return 0;
+>> > +       case PECI_CC_NEED_RETRY:
+>> > +       case PECI_CC_OUT_OF_RESOURCE:
+>> > +       case PECI_CC_UNAVAIL_RESOURCE:
+>> > +               return -EAGAIN;
+>> > +       case PECI_CC_INVALID_REQ:
+>> > +               return -EINVAL;
+>> > +       case PECI_CC_MCA_ERROR:
+>> > +       case PECI_CC_CATASTROPHIC_MCA_ERROR:
+>> > +       case PECI_CC_FATAL_MCA_ERROR:
+>> > +       case PECI_CC_PARITY_ERR_GPSB_OR_PMSB:
+>> > +       case PECI_CC_PARITY_ERR_GPSB_OR_PMSB_IERR:
+>> > +       case PECI_CC_PARITY_ERR_GPSB_OR_PMSB_MCA:
+>> > +               return -EIO;
+>> > +       }
+>> > +
+>> > +       WARN_ONCE(1, "Unknown PECI completion code: %#02x\n", cc);
+>> > +
+>> > +       return -EIO;
 >> > +}
 >> > +EXPORT_SYMBOL_NS_GPL(peci_request_status, PECI);
 >> > +
 >> > +static int peci_request_xfer(struct peci_request *req)
 >> > +{
->> > +???????struct peci_device *device = req->device;
->> > +???????struct peci_controller *controller = device->controller;
->> > +???????int ret;
+>> > +       struct peci_device *device = req->device;
+>> > +       struct peci_controller *controller = device->controller;
+>> > +       int ret;
 >> > +
->> > +???????mutex_lock(&controller->bus_lock);
->> > +???????ret = controller->xfer(controller, device->addr, req);
->> > +???????mutex_unlock(&controller->bus_lock);
+>> > +       mutex_lock(&controller->bus_lock);
+>> > +       ret = controller->xfer(controller, device->addr, req);
+>> > +       mutex_unlock(&controller->bus_lock);
 >> > +
->> > +???????return ret;
+>> > +       return ret;
 >> > +}
 >> > +
 >> > +static int peci_request_xfer_retry(struct peci_request *req)
 >> > +{
->> > +???????long wait_interval = PECI_RETRY_INTERVAL_MIN;
->> > +???????struct peci_device *device = req->device;
->> > +???????struct peci_controller *controller = device->controller;
->> > +???????unsigned long start = jiffies;
->> > +???????int ret;
->> > +
->> > +???????/* Don't try to use it for ping */
->> > +???????if (WARN_ON(!req->rx.buf))
->> > +???????????????return 0;
->> > +
->> > +???????do {
->> > +???????????????ret = peci_request_xfer(req);
->> > +???????????????if (ret) {
->> > +???????????????????????dev_dbg(&controller->dev, "xfer error: %d\n", ret);
->> > +???????????????????????return ret;
->> > +???????????????}
->> > +
->> > +???????????????if (peci_request_status(req) != -EAGAIN)
->> > +???????????????????????return 0;
->> > +
->> > +???????????????/* Set the retry bit to indicate a retry attempt */
->> > +???????????????req->tx.buf[1] |= PECI_RETRY_BIT;
->> > +
->> > +???????????????if (schedule_timeout_interruptible(wait_interval))
->> > +???????????????????????return -ERESTARTSYS;
->> > +
->> > +???????????????wait_interval *= 2;
->> > +???????????????if (wait_interval > PECI_RETRY_INTERVAL_MAX)
->> > +???????????????????????wait_interval = PECI_RETRY_INTERVAL_MAX;
+>> > +       long wait_interval = PECI_RETRY_INTERVAL_MIN;
+>> > +       struct peci_device *device = req->device;
+>> > +       struct peci_controller *controller = device->controller;
+>> > +       unsigned long start = jiffies;
+>> > +       int ret;
+>> > +
+>> > +       /* Don't try to use it for ping */
+>> > +       if (WARN_ON(!req->rx.buf))
+>> > +               return 0;
+>> > +
+>> > +       do {
+>> > +               ret = peci_request_xfer(req);
+>> > +               if (ret) {
+>> > +                       dev_dbg(&controller->dev, "xfer error: %d\n", ret);
+>> > +                       return ret;
+>> > +               }
+>> > +
+>> > +               if (peci_request_status(req) != -EAGAIN)
+>> > +                       return 0;
+>> > +
+>> > +               /* Set the retry bit to indicate a retry attempt */
+>> > +               req->tx.buf[1] |= PECI_RETRY_BIT;
+>> > +
+>> > +               if (schedule_timeout_interruptible(wait_interval))
+>> > +                       return -ERESTARTSYS;
+>> > +
+>> > +               wait_interval *= 2;
+>> > +               if (wait_interval > PECI_RETRY_INTERVAL_MAX)
+>> > +                       wait_interval = PECI_RETRY_INTERVAL_MAX;
 >>
 >> wait_interval = min(wait_interval * 2, PECI_RETRY_INTERVAL_MAX) ?
 >
 >Ack.
 >
 >>
->> > +???????} while (time_before(jiffies, start + PECI_RETRY_TIMEOUT));
+>> > +       } while (time_before(jiffies, start + PECI_RETRY_TIMEOUT));
 >> > +
->> > +???????dev_dbg(&controller->dev, "request timed out\n");
+>> > +       dev_dbg(&controller->dev, "request timed out\n");
 >> > +
->> > +???????return -ETIMEDOUT;
+>> > +       return -ETIMEDOUT;
 >> > +}
 >> > +
 >> > /**
->> > ?* peci_request_alloc() - allocate &struct peci_request with buffers with
+>> >  * peci_request_alloc() - allocate &struct peci_request with buffers with
 >> > given lengths
->> > ?* @device: PECI device to which request is going to be sent
+>> >  * @device: PECI device to which request is going to be sent
 >> > @@ -72,3 +201,91 @@ void peci_request_free(struct peci_request *req)
->> > ????????kfree(req);
+>> >         kfree(req);
 >> > }
 >> > EXPORT_SYMBOL_NS_GPL(peci_request_free, PECI);
 >> > +
 >> > +struct peci_request *peci_get_dib(struct peci_device *device)
 >> > +{
->> > +???????struct peci_request *req;
->> > +???????int ret;
+>> > +       struct peci_request *req;
+>> > +       int ret;
 >> > +
->> > +???????req = peci_request_alloc(device, PECI_GET_DIB_WR_LEN,
+>> > +       req = peci_request_alloc(device, PECI_GET_DIB_WR_LEN,
 >> > PECI_GET_DIB_RD_LEN);
->> > +???????if (!req)
->> > +???????????????return ERR_PTR(-ENOMEM);
+>> > +       if (!req)
+>> > +               return ERR_PTR(-ENOMEM);
 >> > +
->> > +???????req->tx.buf[0] = PECI_GET_DIB_CMD;
+>> > +       req->tx.buf[0] = PECI_GET_DIB_CMD;
 >> > +
->> > +???????ret = peci_request_xfer(req);
->> > +???????if (ret) {
->> > +???????????????peci_request_free(req);
->> > +???????????????return ERR_PTR(ret);
->> > +???????}
+>> > +       ret = peci_request_xfer(req);
+>> > +       if (ret) {
+>> > +               peci_request_free(req);
+>> > +               return ERR_PTR(ret);
+>> > +       }
 >> > +
->> > +???????return req;
+>> > +       return req;
 >> > +}
 >> > +EXPORT_SYMBOL_NS_GPL(peci_get_dib, PECI);
 >> > +
 >> > +static struct peci_request *
 >> > +__pkg_cfg_read(struct peci_device *device, u8 index, u16 param, u8 len)
 >> > +{
->> > +???????struct peci_request *req;
->> > +???????int ret;
->> > +
->> > +???????req = peci_request_alloc(device, PECI_RDPKGCFG_WRITE_LEN,
->> > +??????????????????????????????? PECI_RDPKGCFG_READ_LEN_BASE + len);
->> > +???????if (!req)
->> > +???????????????return ERR_PTR(-ENOMEM);
->> > +
->> > +???????req->tx.buf[0] = PECI_RDPKGCFG_CMD;
->> > +???????req->tx.buf[1] = 0;
->> > +???????req->tx.buf[2] = index;
->> > +???????put_unaligned_le16(param, &req->tx.buf[3]);
->> > +
->> > +???????ret = peci_request_xfer_retry(req);
->> > +???????if (ret) {
->> > +???????????????peci_request_free(req);
->> > +???????????????return ERR_PTR(ret);
->> > +???????}
->> > +
->> > +???????return req;
+>> > +       struct peci_request *req;
+>> > +       int ret;
+>> > +
+>> > +       req = peci_request_alloc(device, PECI_RDPKGCFG_WRITE_LEN,
+>> > +                                PECI_RDPKGCFG_READ_LEN_BASE + len);
+>> > +       if (!req)
+>> > +               return ERR_PTR(-ENOMEM);
+>> > +
+>> > +       req->tx.buf[0] = PECI_RDPKGCFG_CMD;
+>> > +       req->tx.buf[1] = 0;
+>> > +       req->tx.buf[2] = index;
+>> > +       put_unaligned_le16(param, &req->tx.buf[3]);
+>> > +
+>> > +       ret = peci_request_xfer_retry(req);
+>> > +       if (ret) {
+>> > +               peci_request_free(req);
+>> > +               return ERR_PTR(ret);
+>> > +       }
+>> > +
+>> > +       return req;
 >> > +}
 >> > +
 >> > +u8 peci_request_data_readb(struct peci_request *req)
 >> > +{
->> > +???????return req->rx.buf[1];
+>> > +       return req->rx.buf[1];
 >> > +}
 >> > +EXPORT_SYMBOL_NS_GPL(peci_request_data_readb, PECI);
 >> > +
 >> > +u16 peci_request_data_readw(struct peci_request *req)
 >> > +{
->> > +???????return get_unaligned_le16(&req->rx.buf[1]);
+>> > +       return get_unaligned_le16(&req->rx.buf[1]);
 >> > +}
 >> > +EXPORT_SYMBOL_NS_GPL(peci_request_data_readw, PECI);
 >> > +
 >> > +u32 peci_request_data_readl(struct peci_request *req)
 >> > +{
->> > +???????return get_unaligned_le32(&req->rx.buf[1]);
+>> > +       return get_unaligned_le32(&req->rx.buf[1]);
 >> > +}
 >> > +EXPORT_SYMBOL_NS_GPL(peci_request_data_readl, PECI);
 >> > +
 >> > +u64 peci_request_data_readq(struct peci_request *req)
 >> > +{
->> > +???????return get_unaligned_le64(&req->rx.buf[1]);
+>> > +       return get_unaligned_le64(&req->rx.buf[1]);
 >> > +}
 >> > +EXPORT_SYMBOL_NS_GPL(peci_request_data_readq, PECI);
 >> > +
 >> > +u64 peci_request_data_dib(struct peci_request *req)
 >> > +{
->> > +???????return get_unaligned_le64(&req->rx.buf[0]);
+>> > +       return get_unaligned_le64(&req->rx.buf[0]);
 >> > +}
 >> > +EXPORT_SYMBOL_NS_GPL(peci_request_data_dib, PECI);
 >> > +
@@ -637,10 +637,10 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >> > +struct peci_request *peci_pkg_cfg_##x(struct peci_device *device, u8 index,
 >> > u16 param) \
 >> > +{ \
->> > +???????return __pkg_cfg_read(device, index, param, sizeof(type)); \
+>> > +       return __pkg_cfg_read(device, index, param, sizeof(type)); \
 >> > +} \
 >>
->> Is there a reason for this particular API?? I'd think a more natural one
+>> Is there a reason for this particular API?  I'd think a more natural one
 >> that would offload a bit of boilerplate from callers would look more like
 >>
 >> int peci_pkg_cfg_##x(struct peci_device *device, u8 index, u16 param, type
@@ -672,42 +672,42 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >> > #include <linux/mutex.h>
 >> > #include <linux/types.h>
 >> >
->> > +#define PECI_PCS_PKG_ID????????????????????????0? /* Package Identifier
+>> > +#define PECI_PCS_PKG_ID                        0  /* Package Identifier
 >> > Read */
->> > +#define? PECI_PKG_ID_CPU_ID????????????0x0000? /* CPUID Info */
->> > +#define? PECI_PKG_ID_PLATFORM_ID???????0x0001? /* Platform ID */
->> > +#define? PECI_PKG_ID_DEVICE_ID?????????0x0002? /* Uncore Device ID */
->> > +#define? PECI_PKG_ID_MAX_THREAD_ID?????0x0003? /* Max Thread ID */
->> > +#define? PECI_PKG_ID_MICROCODE_REV?????0x0004? /* CPU Microcode Update
+>> > +#define  PECI_PKG_ID_CPU_ID            0x0000  /* CPUID Info */
+>> > +#define  PECI_PKG_ID_PLATFORM_ID       0x0001  /* Platform ID */
+>> > +#define  PECI_PKG_ID_DEVICE_ID         0x0002  /* Uncore Device ID */
+>> > +#define  PECI_PKG_ID_MAX_THREAD_ID     0x0003  /* Max Thread ID */
+>> > +#define  PECI_PKG_ID_MICROCODE_REV     0x0004  /* CPU Microcode Update
 >> > Revision */
->> > +#define? PECI_PKG_ID_MCA_ERROR_LOG?????0x0005? /* Machine Check Status */
+>> > +#define  PECI_PKG_ID_MCA_ERROR_LOG     0x0005  /* Machine Check Status */
 >> > +
 >> > struct peci_request;
 >> >
 >> > /**
 >> > @@ -41,6 +49,11 @@ static inline struct peci_controller
 >> > *to_peci_controller(void *d)
->> > ?* struct peci_device - PECI device
->> > ?* @dev: device object to register PECI device to the device model
->> > ?* @controller: manages the bus segment hosting this PECI device
+>> >  * struct peci_device - PECI device
+>> >  * @dev: device object to register PECI device to the device model
+>> >  * @controller: manages the bus segment hosting this PECI device
 >> > + * @info: PECI device characteristics
 >> > + * @info.family: device family
 >> > + * @info.model: device model
 >> > + * @info.peci_revision: PECI revision supported by the PECI device
 >> > + * @info.socket_id: the socket ID represented by the PECI device
->> > ?* @addr: address used on the PECI bus connected to the parent controller
->> > ?*
->> > ?* A peci_device identifies a single device (i.e. CPU) connected to a PECI
+>> >  * @addr: address used on the PECI bus connected to the parent controller
+>> >  *
+>> >  * A peci_device identifies a single device (i.e. CPU) connected to a PECI
 >> > bus.
 >> > @@ -50,6 +63,12 @@ static inline struct peci_controller
 >> > *to_peci_controller(void *d)
 >> > struct peci_device {
->> > ????????struct device dev;
->> > ????????struct peci_controller *controller;
->> > +???????struct {
->> > +???????????????u16 family;
->> > +???????????????u8 model;
->> > +???????????????u8 peci_revision;
+>> >         struct device dev;
+>> >         struct peci_controller *controller;
+>> > +       struct {
+>> > +               u16 family;
+>> > +               u8 model;
+>> > +               u8 peci_revision;
 >>
 >> This field gets set but doesn't seem to end up used anywhere; is it
 >> useful?
@@ -722,9 +722,9 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >-Iwona
 >
 >>
->> > +???????????????u8 socket_id;
->> > +???????} info;
->> > ????????u8 addr;
+>> > +               u8 socket_id;
+>> > +       } info;
+>> >         u8 addr;
 >> > };
 >> >
 >> > diff --git a/lib/Kconfig b/lib/Kconfig
@@ -734,10 +734,10 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >> > @@ -721,5 +721,5 @@ config ASN1_ENCODER
 >> >
 >> > config GENERIC_LIB_X86
->> > ????????bool
->> > -???????depends on X86
->> > +???????depends on X86 || PECI
->> > ????????default n
+>> >         bool
+>> > -       depends on X86
+>> > +       depends on X86 || PECI
+>> >         default n
 >> > --
 >> > 2.31.1
 >
diff --git a/a/content_digest b/N2/content_digest
index 315ee2f..3423deb 100644
--- a/a/content_digest
+++ b/N2/content_digest
@@ -3,9 +3,36 @@
  "ref\020210727201028.GS8018@packtop\0"
  "ref\079f5b6ed4942ddeb66beea03907a58495376ccef.camel@intel.com\0"
  "From\0Zev Weiss <zweiss@equinix.com>\0"
- "Subject\0[PATCH 09/14] peci: Add support for PECI device drivers\0"
+ "Subject\0Re: [PATCH 09/14] peci: Add support for PECI device drivers\0"
  "Date\0Thu, 29 Jul 2021 23:22:06 +0000\0"
- "To\0linux-aspeed@lists.ozlabs.org\0"
+ "To\0Winiarska"
+ " Iwona <iwona.winiarska@intel.com>\0"
+ "Cc\0linux-aspeed@lists.ozlabs.org <linux-aspeed@lists.ozlabs.org>"
+  linux-doc@vger.kernel.org <linux-doc@vger.kernel.org>
+  jae.hyun.yoo@linux.intel.com <jae.hyun.yoo@linux.intel.com>
+  mchehab@kernel.org <mchehab@kernel.org>
+  corbet@lwn.net <corbet@lwn.net>
+  openbmc@lists.ozlabs.org <openbmc@lists.ozlabs.org>
+  x86@kernel.org <x86@kernel.org>
+  pierre-louis.bossart@linux.intel.com <pierre-louis.bossart@linux.intel.com>
+  mingo@redhat.com <mingo@redhat.com>
+  linux@roeck-us.net <linux@roeck-us.net>
+  devicetree@vger.kernel.org <devicetree@vger.kernel.org>
+  jdelvare@suse.com <jdelvare@suse.com>
+  robh+dt@kernel.org <robh+dt@kernel.org>
+  bp@alien8.de <bp@alien8.de>
+  Lutomirski
+  Andy <luto@kernel.org>
+  tglx@linutronix.de <tglx@linutronix.de>
+  andriy.shevchenko@linux.intel.com <andriy.shevchenko@linux.intel.com>
+  linux-arm-kernel@lists.infradead.org <linux-arm-kernel@lists.infradead.org>
+  linux-hwmon@vger.kernel.org <linux-hwmon@vger.kernel.org>
+  Luck
+  Tony <tony.luck@intel.com>
+  andrew@aj.id.au <andrew@aj.id.au>
+  gregkh@linuxfoundation.org <gregkh@linuxfoundation.org>
+  linux-kernel@vger.kernel.org <linux-kernel@vger.kernel.org>
+ " yazen.ghannam@amd.com <yazen.ghannam@amd.com>\0"
  "\00:1\0"
  "b\0"
  "On Thu, Jul 29, 2021 at 04:17:06PM CDT, Winiarska, Iwona wrote:\n"
@@ -22,13 +49,13 @@
  ">> > Signed-off-by: Iwona Winiarska <iwona.winiarska@intel.com>\n"
  ">> > Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>\n"
  ">> > ---\n"
- ">> > drivers/peci/Kconfig??? |?? 1 +\n"
- ">> > drivers/peci/core.c???? |? 49 +++++++++\n"
- ">> > drivers/peci/device.c?? |? 99 ++++++++++++++++++\n"
- ">> > drivers/peci/internal.h |? 75 ++++++++++++++\n"
- ">> > drivers/peci/request.c? | 217 ++++++++++++++++++++++++++++++++++++++++\n"
- ">> > include/linux/peci.h??? |? 19 ++++\n"
- ">> > lib/Kconfig???????????? |?? 2 +-\n"
+ ">> > drivers/peci/Kconfig\302\240\302\240\302\240 |\302\240\302\240 1 +\n"
+ ">> > drivers/peci/core.c\302\240\302\240\302\240\302\240 |\302\240 49 +++++++++\n"
+ ">> > drivers/peci/device.c\302\240\302\240 |\302\240 99 ++++++++++++++++++\n"
+ ">> > drivers/peci/internal.h |\302\240 75 ++++++++++++++\n"
+ ">> > drivers/peci/request.c\302\240 | 217 ++++++++++++++++++++++++++++++++++++++++\n"
+ ">> > include/linux/peci.h\302\240\302\240\302\240 |\302\240 19 ++++\n"
+ ">> > lib/Kconfig\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 |\302\240\302\240 2 +-\n"
  ">> > 7 files changed, 461 insertions(+), 1 deletion(-)\n"
  ">> >\n"
  ">> > diff --git a/drivers/peci/Kconfig b/drivers/peci/Kconfig\n"
@@ -38,11 +65,11 @@
  ">> > @@ -2,6 +2,7 @@\n"
  ">> >\n"
  ">> > menuconfig PECI\n"
- ">> > ????????tristate \"PECI support\"\n"
- ">> > +???????select GENERIC_LIB_X86\n"
- ">> > ????????help\n"
- ">> > ????????? The Platform Environment Control Interface (PECI) is an interface\n"
- ">> > ????????? that provides a communication channel to Intel processors and\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240tristate \"PECI support\"\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240select GENERIC_LIB_X86\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240help\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 The Platform Environment Control Interface (PECI) is an interface\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 that provides a communication channel to Intel processors and\n"
  ">> > diff --git a/drivers/peci/core.c b/drivers/peci/core.c\n"
  ">> > index ae7a9572cdf3..94426b7f2618 100644\n"
  ">> > --- a/drivers/peci/core.c\n"
@@ -56,57 +83,57 @@
  ">> > +peci_bus_match_device_id(const struct peci_device_id *id, struct\n"
  ">> > peci_device *device)\n"
  ">> > +{\n"
- ">> > +???????while (id->family != 0) {\n"
- ">> > +???????????????if (id->family == device->info.family &&\n"
- ">> > +?????????????????? id->model == device->info.model)\n"
- ">> > +???????????????????????return id;\n"
- ">> > +???????????????id++;\n"
- ">> > +???????}\n"
- ">> > +\n"
- ">> > +???????return NULL;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240while (id->family != 0) {\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (id->family == device->info.family &&\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 id->model == device->info.model)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return id;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240id++;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return NULL;\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > +static int peci_bus_device_match(struct device *dev, struct device_driver\n"
  ">> > *drv)\n"
  ">> > +{\n"
- ">> > +???????struct peci_device *device = to_peci_device(dev);\n"
- ">> > +???????struct peci_driver *peci_drv = to_peci_driver(drv);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_device *device = to_peci_device(dev);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_driver *peci_drv = to_peci_driver(drv);\n"
  ">> > +\n"
- ">> > +???????if (dev->type != &peci_device_type)\n"
- ">> > +???????????????return 0;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (dev->type != &peci_device_type)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return 0;\n"
  ">> > +\n"
- ">> > +???????if (peci_bus_match_device_id(peci_drv->id_table, device))\n"
- ">> > +???????????????return 1;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (peci_bus_match_device_id(peci_drv->id_table, device))\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return 1;\n"
  ">> > +\n"
- ">> > +???????return 0;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return 0;\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > +static int peci_bus_device_probe(struct device *dev)\n"
  ">> > +{\n"
- ">> > +???????struct peci_device *device = to_peci_device(dev);\n"
- ">> > +???????struct peci_driver *driver = to_peci_driver(dev->driver);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_device *device = to_peci_device(dev);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_driver *driver = to_peci_driver(dev->driver);\n"
  ">> > +\n"
- ">> > +???????return driver->probe(device, peci_bus_match_device_id(driver-\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return driver->probe(device, peci_bus_match_device_id(driver-\n"
  ">> > >id_table, device));\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > +static int peci_bus_device_remove(struct device *dev)\n"
  ">> > +{\n"
- ">> > +???????struct peci_device *device = to_peci_device(dev);\n"
- ">> > +???????struct peci_driver *driver = to_peci_driver(dev->driver);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_device *device = to_peci_device(dev);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_driver *driver = to_peci_driver(dev->driver);\n"
  ">> > +\n"
- ">> > +???????if (driver->remove)\n"
- ">> > +???????????????driver->remove(device);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (driver->remove)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240driver->remove(device);\n"
  ">> > +\n"
- ">> > +???????return 0;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return 0;\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > struct bus_type peci_bus_type = {\n"
- ">> > ????????.name???????????= \"peci\",\n"
- ">> > +???????.match??????????= peci_bus_device_match,\n"
- ">> > +???????.probe??????????= peci_bus_device_probe,\n"
- ">> > +???????.remove?????????= peci_bus_device_remove,\n"
- ">> > ????????.bus_groups?????= peci_bus_groups,\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240.name\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240= \"peci\",\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240.match\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240= peci_bus_device_match,\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240.probe\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240= peci_bus_device_probe,\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240.remove\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240= peci_bus_device_remove,\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240.bus_groups\302\240\302\240\302\240\302\240\302\240= peci_bus_groups,\n"
  ">> > };\n"
  ">> >\n"
  ">> > diff --git a/drivers/peci/device.c b/drivers/peci/device.c\n"
@@ -127,19 +154,19 @@
  ">> > +#define REVISION_NUM_MASK GENMASK(15, 8)\n"
  ">> > +static int peci_get_revision(struct peci_device *device, u8 *revision)\n"
  ">> > +{\n"
- ">> > +???????struct peci_request *req;\n"
- ">> > +???????u64 dib;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_request *req;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240u64 dib;\n"
  ">> > +\n"
- ">> > +???????req = peci_get_dib(device);\n"
- ">> > +???????if (IS_ERR(req))\n"
- ">> > +???????????????return PTR_ERR(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240req = peci_get_dib(device);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (IS_ERR(req))\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return PTR_ERR(req);\n"
  ">> > +\n"
- ">> > +???????dib = peci_request_data_dib(req);\n"
- ">> > +???????if (dib == 0) {\n"
- ">> > +???????????????peci_request_free(req);\n"
- ">> > +???????????????return -EIO;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240dib = peci_request_data_dib(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (dib == 0) {\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240peci_request_free(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return -EIO;\n"
  ">>\n"
- ">> Any particular reason to check for zero specifically here?? It looks\n"
+ ">> Any particular reason to check for zero specifically here?\302\240 It looks\n"
  ">> like that would be a case where the host CPU responds and everything's\n"
  ">> otherwise fine, but the host just happened to send back a bunch of zeros\n"
  ">> for whatever reason -- which may not be a valid PECI revision number,\n"
@@ -179,30 +206,30 @@
  "written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.\n"
  "\n"
  ">>\n"
- ">> > +???????}\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\n"
  ">> > +\n"
- ">> > +???????*revision = FIELD_GET(REVISION_NUM_MASK, dib);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240*revision = FIELD_GET(REVISION_NUM_MASK, dib);\n"
  ">> > +\n"
- ">> > +???????peci_request_free(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240peci_request_free(req);\n"
  ">> > +\n"
- ">> > +???????return 0;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return 0;\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > +static int peci_get_cpu_id(struct peci_device *device, u32 *cpu_id)\n"
  ">> > +{\n"
- ">> > +???????struct peci_request *req;\n"
- ">> > +???????int ret;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_request *req;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240int ret;\n"
  ">> > +\n"
- ">> > +???????req = peci_pkg_cfg_readl(device, PECI_PCS_PKG_ID,\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240req = peci_pkg_cfg_readl(device, PECI_PCS_PKG_ID,\n"
  ">> > PECI_PKG_ID_CPU_ID);\n"
- ">> > +???????if (IS_ERR(req))\n"
- ">> > +???????????????return PTR_ERR(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (IS_ERR(req))\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return PTR_ERR(req);\n"
  ">> > +\n"
- ">> > +???????ret = peci_request_status(req);\n"
- ">> > +???????if (ret)\n"
- ">> > +???????????????goto out_req_free;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = peci_request_status(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (ret)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240goto out_req_free;\n"
  ">> > +\n"
- ">> > +???????*cpu_id = peci_request_data_readl(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240*cpu_id = peci_request_data_readl(req);\n"
  ">> > +out_req_free:\n"
  ">>\n"
  ">> As suggested on patch #8, I think it might be cleaner to stack-allocate\n"
@@ -210,8 +237,8 @@
  ">> calls in functions like this and hence might simplify it away entirely,\n"
  ">> but if this does remain like this we could just do\n"
  ">>\n"
- ">> ????????if (!ret)\n"
- ">> ????????????????*cpu_id = peci_request_data_readl(req);\n"
+ ">> \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (!ret)\n"
+ ">> \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240*cpu_id = peci_request_data_readl(req);\n"
  ">>\n"
  ">> instead of using a goto to skip a single line.\n"
  ">\n"
@@ -221,87 +248,87 @@
  ">case of peci requests.\n"
  ">\n"
  ">>\n"
- ">> > +???????peci_request_free(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240peci_request_free(req);\n"
  ">> > +\n"
- ">> > +???????return ret;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return ret;\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > +static int peci_device_info_init(struct peci_device *device)\n"
  ">> > +{\n"
- ">> > +???????u8 revision;\n"
- ">> > +???????u32 cpu_id;\n"
- ">> > +???????int ret;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240u8 revision;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240u32 cpu_id;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240int ret;\n"
  ">> > +\n"
- ">> > +???????ret = peci_get_cpu_id(device, &cpu_id);\n"
- ">> > +???????if (ret)\n"
- ">> > +???????????????return ret;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = peci_get_cpu_id(device, &cpu_id);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (ret)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return ret;\n"
  ">> > +\n"
- ">> > +???????device->info.family = x86_family(cpu_id);\n"
- ">> > +???????device->info.model = x86_model(cpu_id);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240device->info.family = x86_family(cpu_id);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240device->info.model = x86_model(cpu_id);\n"
  ">> > +\n"
- ">> > +???????ret = peci_get_revision(device, &revision);\n"
- ">> > +???????if (ret)\n"
- ">> > +???????????????return ret;\n"
- ">> > +???????device->info.peci_revision = revision;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = peci_get_revision(device, &revision);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (ret)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return ret;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240device->info.peci_revision = revision;\n"
  ">> > +\n"
- ">> > +???????device->info.socket_id = device->addr - PECI_BASE_ADDR;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240device->info.socket_id = device->addr - PECI_BASE_ADDR;\n"
  ">> > +\n"
- ">> > +???????return 0;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return 0;\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > static int peci_detect(struct peci_controller *controller, u8 addr)\n"
  ">> > {\n"
- ">> > ????????struct peci_request *req;\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_request *req;\n"
  ">> > @@ -75,6 +143,10 @@ int peci_device_create(struct peci_controller\n"
  ">> > *controller, u8 addr)\n"
- ">> > ????????device->dev.bus = &peci_bus_type;\n"
- ">> > ????????device->dev.type = &peci_device_type;\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240device->dev.bus = &peci_bus_type;\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240device->dev.type = &peci_device_type;\n"
  ">> >\n"
- ">> > +???????ret = peci_device_info_init(device);\n"
- ">> > +???????if (ret)\n"
- ">> > +???????????????goto err_free;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = peci_device_info_init(device);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (ret)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240goto err_free;\n"
  ">> > +\n"
- ">> > ????????ret = dev_set_name(&device->dev, \"%d-%02x\", controller->id, device-\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = dev_set_name(&device->dev, \"%d-%02x\", controller->id, device-\n"
  ">> > >addr);\n"
- ">> > ????????if (ret)\n"
- ">> > ????????????????goto err_free;\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (ret)\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240goto err_free;\n"
  ">> > @@ -98,6 +170,33 @@ void peci_device_destroy(struct peci_device *device)\n"
- ">> > ????????device_unregister(&device->dev);\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240device_unregister(&device->dev);\n"
  ">> > }\n"
  ">> >\n"
  ">> > +int __peci_driver_register(struct peci_driver *driver, struct module\n"
  ">> > *owner,\n"
- ">> > +????????????????????????? const char *mod_name)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 const char *mod_name)\n"
  ">> > +{\n"
- ">> > +???????driver->driver.bus = &peci_bus_type;\n"
- ">> > +???????driver->driver.owner = owner;\n"
- ">> > +???????driver->driver.mod_name = mod_name;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240driver->driver.bus = &peci_bus_type;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240driver->driver.owner = owner;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240driver->driver.mod_name = mod_name;\n"
  ">> > +\n"
- ">> > +???????if (!driver->probe) {\n"
- ">> > +???????????????pr_err(\"peci: trying to register driver without probe\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (!driver->probe) {\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240pr_err(\"peci: trying to register driver without probe\n"
  ">> > callback\\n\");\n"
- ">> > +???????????????return -EINVAL;\n"
- ">> > +???????}\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return -EINVAL;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\n"
  ">> > +\n"
- ">> > +???????if (!driver->id_table) {\n"
- ">> > +???????????????pr_err(\"peci: trying to register driver without device id\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (!driver->id_table) {\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240pr_err(\"peci: trying to register driver without device id\n"
  ">> > table\\n\");\n"
- ">> > +???????????????return -EINVAL;\n"
- ">> > +???????}\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return -EINVAL;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\n"
  ">> > +\n"
- ">> > +???????return driver_register(&driver->driver);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return driver_register(&driver->driver);\n"
  ">> > +}\n"
  ">> > +EXPORT_SYMBOL_NS_GPL(__peci_driver_register, PECI);\n"
  ">> > +\n"
  ">> > +void peci_driver_unregister(struct peci_driver *driver)\n"
  ">> > +{\n"
- ">> > +???????driver_unregister(&driver->driver);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240driver_unregister(&driver->driver);\n"
  ">> > +}\n"
  ">> > +EXPORT_SYMBOL_NS_GPL(peci_driver_unregister, PECI);\n"
  ">> > +\n"
  ">> > static void peci_device_release(struct device *dev)\n"
  ">> > {\n"
- ">> > ????????struct peci_device *device = to_peci_device(dev);\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_device *device = to_peci_device(dev);\n"
  ">> > diff --git a/drivers/peci/internal.h b/drivers/peci/internal.h\n"
  ">> > index 6b139adaf6b8..c891c93e077a 100644\n"
  ">> > --- a/drivers/peci/internal.h\n"
@@ -338,9 +365,9 @@
  ">> > + * @model: device model\n"
  ">> > + */\n"
  ">> > +struct peci_device_id {\n"
- ">> > +???????const void *data;\n"
- ">> > +???????u16 family;\n"
- ">> > +???????u8 model;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240const void *data;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240u16 family;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240u8 model;\n"
  ">> > +};\n"
  ">> > +\n"
  ">> > extern struct device_type peci_device_type;\n"
@@ -358,21 +385,21 @@
  ">> > + * @id_table: PECI device match table to decide which device to bind\n"
  ">> > + */\n"
  ">> > +struct peci_driver {\n"
- ">> > +???????struct device_driver driver;\n"
- ">> > +???????int (*probe)(struct peci_device *device, const struct peci_device_id\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct device_driver driver;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240int (*probe)(struct peci_device *device, const struct peci_device_id\n"
  ">> > *id);\n"
- ">> > +???????void (*remove)(struct peci_device *device);\n"
- ">> > +???????const struct peci_device_id *id_table;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240void (*remove)(struct peci_device *device);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240const struct peci_device_id *id_table;\n"
  ">> > +};\n"
  ">> > +\n"
  ">> > +static inline struct peci_driver *to_peci_driver(struct device_driver *d)\n"
  ">> > +{\n"
- ">> > +???????return container_of(d, struct peci_driver, driver);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return container_of(d, struct peci_driver, driver);\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > +int __peci_driver_register(struct peci_driver *driver, struct module\n"
  ">> > *owner,\n"
- ">> > +????????????????????????? const char *mod_name);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 const char *mod_name);\n"
  ">> > +/**\n"
  ">> > + * peci_driver_register() - register PECI driver\n"
  ">> > + * @driver: the driver to be registered\n"
@@ -386,7 +413,7 @@
  ">> > + * Return: zero on success, else a negative error code.\n"
  ">> > + */\n"
  ">> > +#define peci_driver_register(driver) \\\n"
- ">> > +???????__peci_driver_register(driver, THIS_MODULE, KBUILD_MODNAME)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240__peci_driver_register(driver, THIS_MODULE, KBUILD_MODNAME)\n"
  ">> > +void peci_driver_unregister(struct peci_driver *driver);\n"
  ">> > +\n"
  ">> > +/**\n"
@@ -400,7 +427,7 @@
  ">> > module_exit()\n"
  ">> > + */\n"
  ">> > +#define module_peci_driver(__peci_driver) \\\n"
- ">> > +???????module_driver(__peci_driver, peci_driver_register,\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240module_driver(__peci_driver, peci_driver_register,\n"
  ">> > peci_driver_unregister)\n"
  ">> > +\n"
  ">> > extern struct device_type peci_controller_type;\n"
@@ -424,39 +451,39 @@
  ">> > +\n"
  ">> > #include \"internal.h\"\n"
  ">> >\n"
- ">> > +#define PECI_GET_DIB_CMD???????????????0xf7\n"
- ">> > +#define? PECI_GET_DIB_WR_LEN???????????1\n"
- ">> > +#define? PECI_GET_DIB_RD_LEN???????????8\n"
+ ">> > +#define PECI_GET_DIB_CMD\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400xf7\n"
+ ">> > +#define\302\240 PECI_GET_DIB_WR_LEN\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2401\n"
+ ">> > +#define\302\240 PECI_GET_DIB_RD_LEN\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2408\n"
  ">> > +\n"
- ">> > +#define PECI_RDPKGCFG_CMD??????????????0xa1\n"
- ">> > +#define? PECI_RDPKGCFG_WRITE_LEN???????5\n"
- ">> > +#define? PECI_RDPKGCFG_READ_LEN_BASE???1\n"
- ">> > +#define PECI_WRPKGCFG_CMD??????????????0xa5\n"
- ">> > +#define? PECI_WRPKGCFG_WRITE_LEN_BASE??6\n"
- ">> > +#define? PECI_WRPKGCFG_READ_LEN????????????????1\n"
+ ">> > +#define PECI_RDPKGCFG_CMD\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400xa1\n"
+ ">> > +#define\302\240 PECI_RDPKGCFG_WRITE_LEN\302\240\302\240\302\240\302\240\302\240\302\240\302\2405\n"
+ ">> > +#define\302\240 PECI_RDPKGCFG_READ_LEN_BASE\302\240\302\240\302\2401\n"
+ ">> > +#define PECI_WRPKGCFG_CMD\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400xa5\n"
+ ">> > +#define\302\240 PECI_WRPKGCFG_WRITE_LEN_BASE\302\240\302\2406\n"
+ ">> > +#define\302\240 PECI_WRPKGCFG_READ_LEN\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2401\n"
  ">> > +\n"
  ">> > +/* Device Specific Completion Code (CC) Definition */\n"
- ">> > +#define PECI_CC_SUCCESS????????????????????????????????0x40\n"
- ">> > +#define PECI_CC_NEED_RETRY?????????????????????0x80\n"
- ">> > +#define PECI_CC_OUT_OF_RESOURCE????????????????????????0x81\n"
- ">> > +#define PECI_CC_UNAVAIL_RESOURCE???????????????0x82\n"
- ">> > +#define PECI_CC_INVALID_REQ????????????????????0x90\n"
- ">> > +#define PECI_CC_MCA_ERROR??????????????????????0x91\n"
- ">> > +#define PECI_CC_CATASTROPHIC_MCA_ERROR?????????0x93\n"
- ">> > +#define PECI_CC_FATAL_MCA_ERROR????????????????????????0x94\n"
- ">> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB????????????????0x98\n"
- ">> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB_IERR???0x9B\n"
- ">> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB_MCA????0x9C\n"
- ">> > +\n"
- ">> > +#define PECI_RETRY_BIT?????????????????BIT(0)\n"
- ">> > +\n"
- ">> > +#define PECI_RETRY_TIMEOUT?????????????msecs_to_jiffies(700)\n"
- ">> > +#define PECI_RETRY_INTERVAL_MIN????????????????msecs_to_jiffies(1)\n"
- ">> > +#define PECI_RETRY_INTERVAL_MAX????????????????msecs_to_jiffies(128)\n"
+ ">> > +#define PECI_CC_SUCCESS\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x40\n"
+ ">> > +#define PECI_CC_NEED_RETRY\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x80\n"
+ ">> > +#define PECI_CC_OUT_OF_RESOURCE\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x81\n"
+ ">> > +#define PECI_CC_UNAVAIL_RESOURCE\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x82\n"
+ ">> > +#define PECI_CC_INVALID_REQ\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x90\n"
+ ">> > +#define PECI_CC_MCA_ERROR\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x91\n"
+ ">> > +#define PECI_CC_CATASTROPHIC_MCA_ERROR\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x93\n"
+ ">> > +#define PECI_CC_FATAL_MCA_ERROR\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x94\n"
+ ">> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x98\n"
+ ">> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB_IERR\302\240\302\240\302\2400x9B\n"
+ ">> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB_MCA\302\240\302\240\302\240\302\2400x9C\n"
+ ">> > +\n"
+ ">> > +#define PECI_RETRY_BIT\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240BIT(0)\n"
+ ">> > +\n"
+ ">> > +#define PECI_RETRY_TIMEOUT\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240msecs_to_jiffies(700)\n"
+ ">> > +#define PECI_RETRY_INTERVAL_MIN\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240msecs_to_jiffies(1)\n"
+ ">> > +#define PECI_RETRY_INTERVAL_MAX\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240msecs_to_jiffies(128)\n"
  ">> > +\n"
  ">> > +static u8 peci_request_data_cc(struct peci_request *req)\n"
  ">> > +{\n"
- ">> > +???????return req->rx.buf[0];\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return req->rx.buf[0];\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > +/**\n"
@@ -471,175 +498,175 @@
  ">> > + */\n"
  ">> > +int peci_request_status(struct peci_request *req)\n"
  ">> > +{\n"
- ">> > +???????u8 cc = peci_request_data_cc(req);\n"
- ">> > +\n"
- ">> > +???????if (cc != PECI_CC_SUCCESS)\n"
- ">> > +???????????????dev_dbg(&req->device->dev, \"ret: %#02x\\n\", cc);\n"
- ">> > +\n"
- ">> > +???????switch (cc) {\n"
- ">> > +???????case PECI_CC_SUCCESS:\n"
- ">> > +???????????????return 0;\n"
- ">> > +???????case PECI_CC_NEED_RETRY:\n"
- ">> > +???????case PECI_CC_OUT_OF_RESOURCE:\n"
- ">> > +???????case PECI_CC_UNAVAIL_RESOURCE:\n"
- ">> > +???????????????return -EAGAIN;\n"
- ">> > +???????case PECI_CC_INVALID_REQ:\n"
- ">> > +???????????????return -EINVAL;\n"
- ">> > +???????case PECI_CC_MCA_ERROR:\n"
- ">> > +???????case PECI_CC_CATASTROPHIC_MCA_ERROR:\n"
- ">> > +???????case PECI_CC_FATAL_MCA_ERROR:\n"
- ">> > +???????case PECI_CC_PARITY_ERR_GPSB_OR_PMSB:\n"
- ">> > +???????case PECI_CC_PARITY_ERR_GPSB_OR_PMSB_IERR:\n"
- ">> > +???????case PECI_CC_PARITY_ERR_GPSB_OR_PMSB_MCA:\n"
- ">> > +???????????????return -EIO;\n"
- ">> > +???????}\n"
- ">> > +\n"
- ">> > +???????WARN_ONCE(1, \"Unknown PECI completion code: %#02x\\n\", cc);\n"
- ">> > +\n"
- ">> > +???????return -EIO;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240u8 cc = peci_request_data_cc(req);\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (cc != PECI_CC_SUCCESS)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240dev_dbg(&req->device->dev, \"ret: %#02x\\n\", cc);\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240switch (cc) {\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240case PECI_CC_SUCCESS:\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return 0;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240case PECI_CC_NEED_RETRY:\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240case PECI_CC_OUT_OF_RESOURCE:\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240case PECI_CC_UNAVAIL_RESOURCE:\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return -EAGAIN;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240case PECI_CC_INVALID_REQ:\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return -EINVAL;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240case PECI_CC_MCA_ERROR:\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240case PECI_CC_CATASTROPHIC_MCA_ERROR:\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240case PECI_CC_FATAL_MCA_ERROR:\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240case PECI_CC_PARITY_ERR_GPSB_OR_PMSB:\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240case PECI_CC_PARITY_ERR_GPSB_OR_PMSB_IERR:\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240case PECI_CC_PARITY_ERR_GPSB_OR_PMSB_MCA:\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return -EIO;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240WARN_ONCE(1, \"Unknown PECI completion code: %#02x\\n\", cc);\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return -EIO;\n"
  ">> > +}\n"
  ">> > +EXPORT_SYMBOL_NS_GPL(peci_request_status, PECI);\n"
  ">> > +\n"
  ">> > +static int peci_request_xfer(struct peci_request *req)\n"
  ">> > +{\n"
- ">> > +???????struct peci_device *device = req->device;\n"
- ">> > +???????struct peci_controller *controller = device->controller;\n"
- ">> > +???????int ret;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_device *device = req->device;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_controller *controller = device->controller;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240int ret;\n"
  ">> > +\n"
- ">> > +???????mutex_lock(&controller->bus_lock);\n"
- ">> > +???????ret = controller->xfer(controller, device->addr, req);\n"
- ">> > +???????mutex_unlock(&controller->bus_lock);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240mutex_lock(&controller->bus_lock);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = controller->xfer(controller, device->addr, req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240mutex_unlock(&controller->bus_lock);\n"
  ">> > +\n"
- ">> > +???????return ret;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return ret;\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > +static int peci_request_xfer_retry(struct peci_request *req)\n"
  ">> > +{\n"
- ">> > +???????long wait_interval = PECI_RETRY_INTERVAL_MIN;\n"
- ">> > +???????struct peci_device *device = req->device;\n"
- ">> > +???????struct peci_controller *controller = device->controller;\n"
- ">> > +???????unsigned long start = jiffies;\n"
- ">> > +???????int ret;\n"
- ">> > +\n"
- ">> > +???????/* Don't try to use it for ping */\n"
- ">> > +???????if (WARN_ON(!req->rx.buf))\n"
- ">> > +???????????????return 0;\n"
- ">> > +\n"
- ">> > +???????do {\n"
- ">> > +???????????????ret = peci_request_xfer(req);\n"
- ">> > +???????????????if (ret) {\n"
- ">> > +???????????????????????dev_dbg(&controller->dev, \"xfer error: %d\\n\", ret);\n"
- ">> > +???????????????????????return ret;\n"
- ">> > +???????????????}\n"
- ">> > +\n"
- ">> > +???????????????if (peci_request_status(req) != -EAGAIN)\n"
- ">> > +???????????????????????return 0;\n"
- ">> > +\n"
- ">> > +???????????????/* Set the retry bit to indicate a retry attempt */\n"
- ">> > +???????????????req->tx.buf[1] |= PECI_RETRY_BIT;\n"
- ">> > +\n"
- ">> > +???????????????if (schedule_timeout_interruptible(wait_interval))\n"
- ">> > +???????????????????????return -ERESTARTSYS;\n"
- ">> > +\n"
- ">> > +???????????????wait_interval *= 2;\n"
- ">> > +???????????????if (wait_interval > PECI_RETRY_INTERVAL_MAX)\n"
- ">> > +???????????????????????wait_interval = PECI_RETRY_INTERVAL_MAX;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240long wait_interval = PECI_RETRY_INTERVAL_MIN;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_device *device = req->device;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_controller *controller = device->controller;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240unsigned long start = jiffies;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240int ret;\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240/* Don't try to use it for ping */\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (WARN_ON(!req->rx.buf))\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return 0;\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240do {\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = peci_request_xfer(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (ret) {\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240dev_dbg(&controller->dev, \"xfer error: %d\\n\", ret);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return ret;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (peci_request_status(req) != -EAGAIN)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return 0;\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240/* Set the retry bit to indicate a retry attempt */\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240req->tx.buf[1] |= PECI_RETRY_BIT;\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (schedule_timeout_interruptible(wait_interval))\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return -ERESTARTSYS;\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240wait_interval *= 2;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (wait_interval > PECI_RETRY_INTERVAL_MAX)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240wait_interval = PECI_RETRY_INTERVAL_MAX;\n"
  ">>\n"
  ">> wait_interval = min(wait_interval * 2, PECI_RETRY_INTERVAL_MAX) ?\n"
  ">\n"
  ">Ack.\n"
  ">\n"
  ">>\n"
- ">> > +???????} while (time_before(jiffies, start + PECI_RETRY_TIMEOUT));\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240} while (time_before(jiffies, start + PECI_RETRY_TIMEOUT));\n"
  ">> > +\n"
- ">> > +???????dev_dbg(&controller->dev, \"request timed out\\n\");\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240dev_dbg(&controller->dev, \"request timed out\\n\");\n"
  ">> > +\n"
- ">> > +???????return -ETIMEDOUT;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return -ETIMEDOUT;\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > /**\n"
- ">> > ?* peci_request_alloc() - allocate &struct peci_request with buffers with\n"
+ ">> > \302\240* peci_request_alloc() - allocate &struct peci_request with buffers with\n"
  ">> > given lengths\n"
- ">> > ?* @device: PECI device to which request is going to be sent\n"
+ ">> > \302\240* @device: PECI device to which request is going to be sent\n"
  ">> > @@ -72,3 +201,91 @@ void peci_request_free(struct peci_request *req)\n"
- ">> > ????????kfree(req);\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240kfree(req);\n"
  ">> > }\n"
  ">> > EXPORT_SYMBOL_NS_GPL(peci_request_free, PECI);\n"
  ">> > +\n"
  ">> > +struct peci_request *peci_get_dib(struct peci_device *device)\n"
  ">> > +{\n"
- ">> > +???????struct peci_request *req;\n"
- ">> > +???????int ret;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_request *req;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240int ret;\n"
  ">> > +\n"
- ">> > +???????req = peci_request_alloc(device, PECI_GET_DIB_WR_LEN,\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240req = peci_request_alloc(device, PECI_GET_DIB_WR_LEN,\n"
  ">> > PECI_GET_DIB_RD_LEN);\n"
- ">> > +???????if (!req)\n"
- ">> > +???????????????return ERR_PTR(-ENOMEM);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (!req)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return ERR_PTR(-ENOMEM);\n"
  ">> > +\n"
- ">> > +???????req->tx.buf[0] = PECI_GET_DIB_CMD;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240req->tx.buf[0] = PECI_GET_DIB_CMD;\n"
  ">> > +\n"
- ">> > +???????ret = peci_request_xfer(req);\n"
- ">> > +???????if (ret) {\n"
- ">> > +???????????????peci_request_free(req);\n"
- ">> > +???????????????return ERR_PTR(ret);\n"
- ">> > +???????}\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = peci_request_xfer(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (ret) {\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240peci_request_free(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return ERR_PTR(ret);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\n"
  ">> > +\n"
- ">> > +???????return req;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return req;\n"
  ">> > +}\n"
  ">> > +EXPORT_SYMBOL_NS_GPL(peci_get_dib, PECI);\n"
  ">> > +\n"
  ">> > +static struct peci_request *\n"
  ">> > +__pkg_cfg_read(struct peci_device *device, u8 index, u16 param, u8 len)\n"
  ">> > +{\n"
- ">> > +???????struct peci_request *req;\n"
- ">> > +???????int ret;\n"
- ">> > +\n"
- ">> > +???????req = peci_request_alloc(device, PECI_RDPKGCFG_WRITE_LEN,\n"
- ">> > +??????????????????????????????? PECI_RDPKGCFG_READ_LEN_BASE + len);\n"
- ">> > +???????if (!req)\n"
- ">> > +???????????????return ERR_PTR(-ENOMEM);\n"
- ">> > +\n"
- ">> > +???????req->tx.buf[0] = PECI_RDPKGCFG_CMD;\n"
- ">> > +???????req->tx.buf[1] = 0;\n"
- ">> > +???????req->tx.buf[2] = index;\n"
- ">> > +???????put_unaligned_le16(param, &req->tx.buf[3]);\n"
- ">> > +\n"
- ">> > +???????ret = peci_request_xfer_retry(req);\n"
- ">> > +???????if (ret) {\n"
- ">> > +???????????????peci_request_free(req);\n"
- ">> > +???????????????return ERR_PTR(ret);\n"
- ">> > +???????}\n"
- ">> > +\n"
- ">> > +???????return req;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_request *req;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240int ret;\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240req = peci_request_alloc(device, PECI_RDPKGCFG_WRITE_LEN,\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 PECI_RDPKGCFG_READ_LEN_BASE + len);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (!req)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return ERR_PTR(-ENOMEM);\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240req->tx.buf[0] = PECI_RDPKGCFG_CMD;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240req->tx.buf[1] = 0;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240req->tx.buf[2] = index;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240put_unaligned_le16(param, &req->tx.buf[3]);\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = peci_request_xfer_retry(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (ret) {\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240peci_request_free(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return ERR_PTR(ret);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return req;\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > +u8 peci_request_data_readb(struct peci_request *req)\n"
  ">> > +{\n"
- ">> > +???????return req->rx.buf[1];\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return req->rx.buf[1];\n"
  ">> > +}\n"
  ">> > +EXPORT_SYMBOL_NS_GPL(peci_request_data_readb, PECI);\n"
  ">> > +\n"
  ">> > +u16 peci_request_data_readw(struct peci_request *req)\n"
  ">> > +{\n"
- ">> > +???????return get_unaligned_le16(&req->rx.buf[1]);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return get_unaligned_le16(&req->rx.buf[1]);\n"
  ">> > +}\n"
  ">> > +EXPORT_SYMBOL_NS_GPL(peci_request_data_readw, PECI);\n"
  ">> > +\n"
  ">> > +u32 peci_request_data_readl(struct peci_request *req)\n"
  ">> > +{\n"
- ">> > +???????return get_unaligned_le32(&req->rx.buf[1]);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return get_unaligned_le32(&req->rx.buf[1]);\n"
  ">> > +}\n"
  ">> > +EXPORT_SYMBOL_NS_GPL(peci_request_data_readl, PECI);\n"
  ">> > +\n"
  ">> > +u64 peci_request_data_readq(struct peci_request *req)\n"
  ">> > +{\n"
- ">> > +???????return get_unaligned_le64(&req->rx.buf[1]);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return get_unaligned_le64(&req->rx.buf[1]);\n"
  ">> > +}\n"
  ">> > +EXPORT_SYMBOL_NS_GPL(peci_request_data_readq, PECI);\n"
  ">> > +\n"
  ">> > +u64 peci_request_data_dib(struct peci_request *req)\n"
  ">> > +{\n"
- ">> > +???????return get_unaligned_le64(&req->rx.buf[0]);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return get_unaligned_le64(&req->rx.buf[0]);\n"
  ">> > +}\n"
  ">> > +EXPORT_SYMBOL_NS_GPL(peci_request_data_dib, PECI);\n"
  ">> > +\n"
@@ -647,10 +674,10 @@
  ">> > +struct peci_request *peci_pkg_cfg_##x(struct peci_device *device, u8 index,\n"
  ">> > u16 param) \\\n"
  ">> > +{ \\\n"
- ">> > +???????return __pkg_cfg_read(device, index, param, sizeof(type)); \\\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return __pkg_cfg_read(device, index, param, sizeof(type)); \\\n"
  ">> > +} \\\n"
  ">>\n"
- ">> Is there a reason for this particular API?? I'd think a more natural one\n"
+ ">> Is there a reason for this particular API?\302\240 I'd think a more natural one\n"
  ">> that would offload a bit of boilerplate from callers would look more like\n"
  ">>\n"
  ">> int peci_pkg_cfg_##x(struct peci_device *device, u8 index, u16 param, type\n"
@@ -682,42 +709,42 @@
  ">> > #include <linux/mutex.h>\n"
  ">> > #include <linux/types.h>\n"
  ">> >\n"
- ">> > +#define PECI_PCS_PKG_ID????????????????????????0? /* Package Identifier\n"
+ ">> > +#define PECI_PCS_PKG_ID\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400\302\240 /* Package Identifier\n"
  ">> > Read */\n"
- ">> > +#define? PECI_PKG_ID_CPU_ID????????????0x0000? /* CPUID Info */\n"
- ">> > +#define? PECI_PKG_ID_PLATFORM_ID???????0x0001? /* Platform ID */\n"
- ">> > +#define? PECI_PKG_ID_DEVICE_ID?????????0x0002? /* Uncore Device ID */\n"
- ">> > +#define? PECI_PKG_ID_MAX_THREAD_ID?????0x0003? /* Max Thread ID */\n"
- ">> > +#define? PECI_PKG_ID_MICROCODE_REV?????0x0004? /* CPU Microcode Update\n"
+ ">> > +#define\302\240 PECI_PKG_ID_CPU_ID\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x0000\302\240 /* CPUID Info */\n"
+ ">> > +#define\302\240 PECI_PKG_ID_PLATFORM_ID\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x0001\302\240 /* Platform ID */\n"
+ ">> > +#define\302\240 PECI_PKG_ID_DEVICE_ID\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x0002\302\240 /* Uncore Device ID */\n"
+ ">> > +#define\302\240 PECI_PKG_ID_MAX_THREAD_ID\302\240\302\240\302\240\302\240\302\2400x0003\302\240 /* Max Thread ID */\n"
+ ">> > +#define\302\240 PECI_PKG_ID_MICROCODE_REV\302\240\302\240\302\240\302\240\302\2400x0004\302\240 /* CPU Microcode Update\n"
  ">> > Revision */\n"
- ">> > +#define? PECI_PKG_ID_MCA_ERROR_LOG?????0x0005? /* Machine Check Status */\n"
+ ">> > +#define\302\240 PECI_PKG_ID_MCA_ERROR_LOG\302\240\302\240\302\240\302\240\302\2400x0005\302\240 /* Machine Check Status */\n"
  ">> > +\n"
  ">> > struct peci_request;\n"
  ">> >\n"
  ">> > /**\n"
  ">> > @@ -41,6 +49,11 @@ static inline struct peci_controller\n"
  ">> > *to_peci_controller(void *d)\n"
- ">> > ?* struct peci_device - PECI device\n"
- ">> > ?* @dev: device object to register PECI device to the device model\n"
- ">> > ?* @controller: manages the bus segment hosting this PECI device\n"
+ ">> > \302\240* struct peci_device - PECI device\n"
+ ">> > \302\240* @dev: device object to register PECI device to the device model\n"
+ ">> > \302\240* @controller: manages the bus segment hosting this PECI device\n"
  ">> > + * @info: PECI device characteristics\n"
  ">> > + * @info.family: device family\n"
  ">> > + * @info.model: device model\n"
  ">> > + * @info.peci_revision: PECI revision supported by the PECI device\n"
  ">> > + * @info.socket_id: the socket ID represented by the PECI device\n"
- ">> > ?* @addr: address used on the PECI bus connected to the parent controller\n"
- ">> > ?*\n"
- ">> > ?* A peci_device identifies a single device (i.e. CPU) connected to a PECI\n"
+ ">> > \302\240* @addr: address used on the PECI bus connected to the parent controller\n"
+ ">> > \302\240*\n"
+ ">> > \302\240* A peci_device identifies a single device (i.e. CPU) connected to a PECI\n"
  ">> > bus.\n"
  ">> > @@ -50,6 +63,12 @@ static inline struct peci_controller\n"
  ">> > *to_peci_controller(void *d)\n"
  ">> > struct peci_device {\n"
- ">> > ????????struct device dev;\n"
- ">> > ????????struct peci_controller *controller;\n"
- ">> > +???????struct {\n"
- ">> > +???????????????u16 family;\n"
- ">> > +???????????????u8 model;\n"
- ">> > +???????????????u8 peci_revision;\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct device dev;\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_controller *controller;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct {\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240u16 family;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240u8 model;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240u8 peci_revision;\n"
  ">>\n"
  ">> This field gets set but doesn't seem to end up used anywhere; is it\n"
  ">> useful?\n"
@@ -732,9 +759,9 @@
  ">-Iwona\n"
  ">\n"
  ">>\n"
- ">> > +???????????????u8 socket_id;\n"
- ">> > +???????} info;\n"
- ">> > ????????u8 addr;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240u8 socket_id;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240} info;\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240u8 addr;\n"
  ">> > };\n"
  ">> >\n"
  ">> > diff --git a/lib/Kconfig b/lib/Kconfig\n"
@@ -744,12 +771,12 @@
  ">> > @@ -721,5 +721,5 @@ config ASN1_ENCODER\n"
  ">> >\n"
  ">> > config GENERIC_LIB_X86\n"
- ">> > ????????bool\n"
- ">> > -???????depends on X86\n"
- ">> > +???????depends on X86 || PECI\n"
- ">> > ????????default n\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240bool\n"
+ ">> > -\302\240\302\240\302\240\302\240\302\240\302\240\302\240depends on X86\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240depends on X86 || PECI\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240default n\n"
  ">> > --\n"
  ">> > 2.31.1\n"
  >
 
-59cebbc101d3bc33ab3be319d67420d863e647d7adc3ae35d9c3e03b17c38743
+c610e83a4892f15c1b998bbf97e876872475ce1b47bcdcabe271aa8d53b00359

diff --git a/a/1.txt b/N3/1.txt
index bd6a626..fa193f8 100644
--- a/a/1.txt
+++ b/N3/1.txt
@@ -12,13 +12,13 @@ On Thu, Jul 29, 2021 at 04:17:06PM CDT, Winiarska, Iwona wrote:
 >> > Signed-off-by: Iwona Winiarska <iwona.winiarska@intel.com>
 >> > Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
 >> > ---
->> > drivers/peci/Kconfig??? |?? 1 +
->> > drivers/peci/core.c???? |? 49 +++++++++
->> > drivers/peci/device.c?? |? 99 ++++++++++++++++++
->> > drivers/peci/internal.h |? 75 ++++++++++++++
->> > drivers/peci/request.c? | 217 ++++++++++++++++++++++++++++++++++++++++
->> > include/linux/peci.h??? |? 19 ++++
->> > lib/Kconfig???????????? |?? 2 +-
+>> > drivers/peci/Kconfig    |   1 +
+>> > drivers/peci/core.c     |  49 +++++++++
+>> > drivers/peci/device.c   |  99 ++++++++++++++++++
+>> > drivers/peci/internal.h |  75 ++++++++++++++
+>> > drivers/peci/request.c  | 217 ++++++++++++++++++++++++++++++++++++++++
+>> > include/linux/peci.h    |  19 ++++
+>> > lib/Kconfig             |   2 +-
 >> > 7 files changed, 461 insertions(+), 1 deletion(-)
 >> >
 >> > diff --git a/drivers/peci/Kconfig b/drivers/peci/Kconfig
@@ -28,11 +28,11 @@ On Thu, Jul 29, 2021 at 04:17:06PM CDT, Winiarska, Iwona wrote:
 >> > @@ -2,6 +2,7 @@
 >> >
 >> > menuconfig PECI
->> > ????????tristate "PECI support"
->> > +???????select GENERIC_LIB_X86
->> > ????????help
->> > ????????? The Platform Environment Control Interface (PECI) is an interface
->> > ????????? that provides a communication channel to Intel processors and
+>> >         tristate "PECI support"
+>> > +       select GENERIC_LIB_X86
+>> >         help
+>> >           The Platform Environment Control Interface (PECI) is an interface
+>> >           that provides a communication channel to Intel processors and
 >> > diff --git a/drivers/peci/core.c b/drivers/peci/core.c
 >> > index ae7a9572cdf3..94426b7f2618 100644
 >> > --- a/drivers/peci/core.c
@@ -46,57 +46,57 @@ On Thu, Jul 29, 2021 at 04:17:06PM CDT, Winiarska, Iwona wrote:
 >> > +peci_bus_match_device_id(const struct peci_device_id *id, struct
 >> > peci_device *device)
 >> > +{
->> > +???????while (id->family != 0) {
->> > +???????????????if (id->family == device->info.family &&
->> > +?????????????????? id->model == device->info.model)
->> > +???????????????????????return id;
->> > +???????????????id++;
->> > +???????}
->> > +
->> > +???????return NULL;
+>> > +       while (id->family != 0) {
+>> > +               if (id->family == device->info.family &&
+>> > +                   id->model == device->info.model)
+>> > +                       return id;
+>> > +               id++;
+>> > +       }
+>> > +
+>> > +       return NULL;
 >> > +}
 >> > +
 >> > +static int peci_bus_device_match(struct device *dev, struct device_driver
 >> > *drv)
 >> > +{
->> > +???????struct peci_device *device = to_peci_device(dev);
->> > +???????struct peci_driver *peci_drv = to_peci_driver(drv);
+>> > +       struct peci_device *device = to_peci_device(dev);
+>> > +       struct peci_driver *peci_drv = to_peci_driver(drv);
 >> > +
->> > +???????if (dev->type != &peci_device_type)
->> > +???????????????return 0;
+>> > +       if (dev->type != &peci_device_type)
+>> > +               return 0;
 >> > +
->> > +???????if (peci_bus_match_device_id(peci_drv->id_table, device))
->> > +???????????????return 1;
+>> > +       if (peci_bus_match_device_id(peci_drv->id_table, device))
+>> > +               return 1;
 >> > +
->> > +???????return 0;
+>> > +       return 0;
 >> > +}
 >> > +
 >> > +static int peci_bus_device_probe(struct device *dev)
 >> > +{
->> > +???????struct peci_device *device = to_peci_device(dev);
->> > +???????struct peci_driver *driver = to_peci_driver(dev->driver);
+>> > +       struct peci_device *device = to_peci_device(dev);
+>> > +       struct peci_driver *driver = to_peci_driver(dev->driver);
 >> > +
->> > +???????return driver->probe(device, peci_bus_match_device_id(driver-
+>> > +       return driver->probe(device, peci_bus_match_device_id(driver-
 >> > >id_table, device));
 >> > +}
 >> > +
 >> > +static int peci_bus_device_remove(struct device *dev)
 >> > +{
->> > +???????struct peci_device *device = to_peci_device(dev);
->> > +???????struct peci_driver *driver = to_peci_driver(dev->driver);
+>> > +       struct peci_device *device = to_peci_device(dev);
+>> > +       struct peci_driver *driver = to_peci_driver(dev->driver);
 >> > +
->> > +???????if (driver->remove)
->> > +???????????????driver->remove(device);
+>> > +       if (driver->remove)
+>> > +               driver->remove(device);
 >> > +
->> > +???????return 0;
+>> > +       return 0;
 >> > +}
 >> > +
 >> > struct bus_type peci_bus_type = {
->> > ????????.name???????????= "peci",
->> > +???????.match??????????= peci_bus_device_match,
->> > +???????.probe??????????= peci_bus_device_probe,
->> > +???????.remove?????????= peci_bus_device_remove,
->> > ????????.bus_groups?????= peci_bus_groups,
+>> >         .name           = "peci",
+>> > +       .match          = peci_bus_device_match,
+>> > +       .probe          = peci_bus_device_probe,
+>> > +       .remove         = peci_bus_device_remove,
+>> >         .bus_groups     = peci_bus_groups,
 >> > };
 >> >
 >> > diff --git a/drivers/peci/device.c b/drivers/peci/device.c
@@ -117,19 +117,19 @@ On Thu, Jul 29, 2021 at 04:17:06PM CDT, Winiarska, Iwona wrote:
 >> > +#define REVISION_NUM_MASK GENMASK(15, 8)
 >> > +static int peci_get_revision(struct peci_device *device, u8 *revision)
 >> > +{
->> > +???????struct peci_request *req;
->> > +???????u64 dib;
+>> > +       struct peci_request *req;
+>> > +       u64 dib;
 >> > +
->> > +???????req = peci_get_dib(device);
->> > +???????if (IS_ERR(req))
->> > +???????????????return PTR_ERR(req);
+>> > +       req = peci_get_dib(device);
+>> > +       if (IS_ERR(req))
+>> > +               return PTR_ERR(req);
 >> > +
->> > +???????dib = peci_request_data_dib(req);
->> > +???????if (dib == 0) {
->> > +???????????????peci_request_free(req);
->> > +???????????????return -EIO;
+>> > +       dib = peci_request_data_dib(req);
+>> > +       if (dib == 0) {
+>> > +               peci_request_free(req);
+>> > +               return -EIO;
 >>
->> Any particular reason to check for zero specifically here?? It looks
+>> Any particular reason to check for zero specifically here?  It looks
 >> like that would be a case where the host CPU responds and everything's
 >> otherwise fine, but the host just happened to send back a bunch of zeros
 >> for whatever reason -- which may not be a valid PECI revision number,
@@ -169,30 +169,30 @@ I suppose it facilitates an easy zero check, but that could also be
 written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 
 >>
->> > +???????}
+>> > +       }
 >> > +
->> > +???????*revision = FIELD_GET(REVISION_NUM_MASK, dib);
+>> > +       *revision = FIELD_GET(REVISION_NUM_MASK, dib);
 >> > +
->> > +???????peci_request_free(req);
+>> > +       peci_request_free(req);
 >> > +
->> > +???????return 0;
+>> > +       return 0;
 >> > +}
 >> > +
 >> > +static int peci_get_cpu_id(struct peci_device *device, u32 *cpu_id)
 >> > +{
->> > +???????struct peci_request *req;
->> > +???????int ret;
+>> > +       struct peci_request *req;
+>> > +       int ret;
 >> > +
->> > +???????req = peci_pkg_cfg_readl(device, PECI_PCS_PKG_ID,
+>> > +       req = peci_pkg_cfg_readl(device, PECI_PCS_PKG_ID,
 >> > PECI_PKG_ID_CPU_ID);
->> > +???????if (IS_ERR(req))
->> > +???????????????return PTR_ERR(req);
+>> > +       if (IS_ERR(req))
+>> > +               return PTR_ERR(req);
 >> > +
->> > +???????ret = peci_request_status(req);
->> > +???????if (ret)
->> > +???????????????goto out_req_free;
+>> > +       ret = peci_request_status(req);
+>> > +       if (ret)
+>> > +               goto out_req_free;
 >> > +
->> > +???????*cpu_id = peci_request_data_readl(req);
+>> > +       *cpu_id = peci_request_data_readl(req);
 >> > +out_req_free:
 >>
 >> As suggested on patch #8, I think it might be cleaner to stack-allocate
@@ -200,8 +200,8 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >> calls in functions like this and hence might simplify it away entirely,
 >> but if this does remain like this we could just do
 >>
->> ????????if (!ret)
->> ????????????????*cpu_id = peci_request_data_readl(req);
+>>         if (!ret)
+>>                 *cpu_id = peci_request_data_readl(req);
 >>
 >> instead of using a goto to skip a single line.
 >
@@ -211,87 +211,87 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >case of peci requests.
 >
 >>
->> > +???????peci_request_free(req);
+>> > +       peci_request_free(req);
 >> > +
->> > +???????return ret;
+>> > +       return ret;
 >> > +}
 >> > +
 >> > +static int peci_device_info_init(struct peci_device *device)
 >> > +{
->> > +???????u8 revision;
->> > +???????u32 cpu_id;
->> > +???????int ret;
+>> > +       u8 revision;
+>> > +       u32 cpu_id;
+>> > +       int ret;
 >> > +
->> > +???????ret = peci_get_cpu_id(device, &cpu_id);
->> > +???????if (ret)
->> > +???????????????return ret;
+>> > +       ret = peci_get_cpu_id(device, &cpu_id);
+>> > +       if (ret)
+>> > +               return ret;
 >> > +
->> > +???????device->info.family = x86_family(cpu_id);
->> > +???????device->info.model = x86_model(cpu_id);
+>> > +       device->info.family = x86_family(cpu_id);
+>> > +       device->info.model = x86_model(cpu_id);
 >> > +
->> > +???????ret = peci_get_revision(device, &revision);
->> > +???????if (ret)
->> > +???????????????return ret;
->> > +???????device->info.peci_revision = revision;
+>> > +       ret = peci_get_revision(device, &revision);
+>> > +       if (ret)
+>> > +               return ret;
+>> > +       device->info.peci_revision = revision;
 >> > +
->> > +???????device->info.socket_id = device->addr - PECI_BASE_ADDR;
+>> > +       device->info.socket_id = device->addr - PECI_BASE_ADDR;
 >> > +
->> > +???????return 0;
+>> > +       return 0;
 >> > +}
 >> > +
 >> > static int peci_detect(struct peci_controller *controller, u8 addr)
 >> > {
->> > ????????struct peci_request *req;
+>> >         struct peci_request *req;
 >> > @@ -75,6 +143,10 @@ int peci_device_create(struct peci_controller
 >> > *controller, u8 addr)
->> > ????????device->dev.bus = &peci_bus_type;
->> > ????????device->dev.type = &peci_device_type;
+>> >         device->dev.bus = &peci_bus_type;
+>> >         device->dev.type = &peci_device_type;
 >> >
->> > +???????ret = peci_device_info_init(device);
->> > +???????if (ret)
->> > +???????????????goto err_free;
+>> > +       ret = peci_device_info_init(device);
+>> > +       if (ret)
+>> > +               goto err_free;
 >> > +
->> > ????????ret = dev_set_name(&device->dev, "%d-%02x", controller->id, device-
+>> >         ret = dev_set_name(&device->dev, "%d-%02x", controller->id, device-
 >> > >addr);
->> > ????????if (ret)
->> > ????????????????goto err_free;
+>> >         if (ret)
+>> >                 goto err_free;
 >> > @@ -98,6 +170,33 @@ void peci_device_destroy(struct peci_device *device)
->> > ????????device_unregister(&device->dev);
+>> >         device_unregister(&device->dev);
 >> > }
 >> >
 >> > +int __peci_driver_register(struct peci_driver *driver, struct module
 >> > *owner,
->> > +????????????????????????? const char *mod_name)
+>> > +                          const char *mod_name)
 >> > +{
->> > +???????driver->driver.bus = &peci_bus_type;
->> > +???????driver->driver.owner = owner;
->> > +???????driver->driver.mod_name = mod_name;
+>> > +       driver->driver.bus = &peci_bus_type;
+>> > +       driver->driver.owner = owner;
+>> > +       driver->driver.mod_name = mod_name;
 >> > +
->> > +???????if (!driver->probe) {
->> > +???????????????pr_err("peci: trying to register driver without probe
+>> > +       if (!driver->probe) {
+>> > +               pr_err("peci: trying to register driver without probe
 >> > callback\n");
->> > +???????????????return -EINVAL;
->> > +???????}
+>> > +               return -EINVAL;
+>> > +       }
 >> > +
->> > +???????if (!driver->id_table) {
->> > +???????????????pr_err("peci: trying to register driver without device id
+>> > +       if (!driver->id_table) {
+>> > +               pr_err("peci: trying to register driver without device id
 >> > table\n");
->> > +???????????????return -EINVAL;
->> > +???????}
+>> > +               return -EINVAL;
+>> > +       }
 >> > +
->> > +???????return driver_register(&driver->driver);
+>> > +       return driver_register(&driver->driver);
 >> > +}
 >> > +EXPORT_SYMBOL_NS_GPL(__peci_driver_register, PECI);
 >> > +
 >> > +void peci_driver_unregister(struct peci_driver *driver)
 >> > +{
->> > +???????driver_unregister(&driver->driver);
+>> > +       driver_unregister(&driver->driver);
 >> > +}
 >> > +EXPORT_SYMBOL_NS_GPL(peci_driver_unregister, PECI);
 >> > +
 >> > static void peci_device_release(struct device *dev)
 >> > {
->> > ????????struct peci_device *device = to_peci_device(dev);
+>> >         struct peci_device *device = to_peci_device(dev);
 >> > diff --git a/drivers/peci/internal.h b/drivers/peci/internal.h
 >> > index 6b139adaf6b8..c891c93e077a 100644
 >> > --- a/drivers/peci/internal.h
@@ -328,9 +328,9 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >> > + * @model: device model
 >> > + */
 >> > +struct peci_device_id {
->> > +???????const void *data;
->> > +???????u16 family;
->> > +???????u8 model;
+>> > +       const void *data;
+>> > +       u16 family;
+>> > +       u8 model;
 >> > +};
 >> > +
 >> > extern struct device_type peci_device_type;
@@ -348,21 +348,21 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >> > + * @id_table: PECI device match table to decide which device to bind
 >> > + */
 >> > +struct peci_driver {
->> > +???????struct device_driver driver;
->> > +???????int (*probe)(struct peci_device *device, const struct peci_device_id
+>> > +       struct device_driver driver;
+>> > +       int (*probe)(struct peci_device *device, const struct peci_device_id
 >> > *id);
->> > +???????void (*remove)(struct peci_device *device);
->> > +???????const struct peci_device_id *id_table;
+>> > +       void (*remove)(struct peci_device *device);
+>> > +       const struct peci_device_id *id_table;
 >> > +};
 >> > +
 >> > +static inline struct peci_driver *to_peci_driver(struct device_driver *d)
 >> > +{
->> > +???????return container_of(d, struct peci_driver, driver);
+>> > +       return container_of(d, struct peci_driver, driver);
 >> > +}
 >> > +
 >> > +int __peci_driver_register(struct peci_driver *driver, struct module
 >> > *owner,
->> > +????????????????????????? const char *mod_name);
+>> > +                          const char *mod_name);
 >> > +/**
 >> > + * peci_driver_register() - register PECI driver
 >> > + * @driver: the driver to be registered
@@ -376,7 +376,7 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >> > + * Return: zero on success, else a negative error code.
 >> > + */
 >> > +#define peci_driver_register(driver) \
->> > +???????__peci_driver_register(driver, THIS_MODULE, KBUILD_MODNAME)
+>> > +       __peci_driver_register(driver, THIS_MODULE, KBUILD_MODNAME)
 >> > +void peci_driver_unregister(struct peci_driver *driver);
 >> > +
 >> > +/**
@@ -390,7 +390,7 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >> > module_exit()
 >> > + */
 >> > +#define module_peci_driver(__peci_driver) \
->> > +???????module_driver(__peci_driver, peci_driver_register,
+>> > +       module_driver(__peci_driver, peci_driver_register,
 >> > peci_driver_unregister)
 >> > +
 >> > extern struct device_type peci_controller_type;
@@ -414,39 +414,39 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >> > +
 >> > #include "internal.h"
 >> >
->> > +#define PECI_GET_DIB_CMD???????????????0xf7
->> > +#define? PECI_GET_DIB_WR_LEN???????????1
->> > +#define? PECI_GET_DIB_RD_LEN???????????8
+>> > +#define PECI_GET_DIB_CMD               0xf7
+>> > +#define  PECI_GET_DIB_WR_LEN           1
+>> > +#define  PECI_GET_DIB_RD_LEN           8
 >> > +
->> > +#define PECI_RDPKGCFG_CMD??????????????0xa1
->> > +#define? PECI_RDPKGCFG_WRITE_LEN???????5
->> > +#define? PECI_RDPKGCFG_READ_LEN_BASE???1
->> > +#define PECI_WRPKGCFG_CMD??????????????0xa5
->> > +#define? PECI_WRPKGCFG_WRITE_LEN_BASE??6
->> > +#define? PECI_WRPKGCFG_READ_LEN????????????????1
+>> > +#define PECI_RDPKGCFG_CMD              0xa1
+>> > +#define  PECI_RDPKGCFG_WRITE_LEN       5
+>> > +#define  PECI_RDPKGCFG_READ_LEN_BASE   1
+>> > +#define PECI_WRPKGCFG_CMD              0xa5
+>> > +#define  PECI_WRPKGCFG_WRITE_LEN_BASE  6
+>> > +#define  PECI_WRPKGCFG_READ_LEN                1
 >> > +
 >> > +/* Device Specific Completion Code (CC) Definition */
->> > +#define PECI_CC_SUCCESS????????????????????????????????0x40
->> > +#define PECI_CC_NEED_RETRY?????????????????????0x80
->> > +#define PECI_CC_OUT_OF_RESOURCE????????????????????????0x81
->> > +#define PECI_CC_UNAVAIL_RESOURCE???????????????0x82
->> > +#define PECI_CC_INVALID_REQ????????????????????0x90
->> > +#define PECI_CC_MCA_ERROR??????????????????????0x91
->> > +#define PECI_CC_CATASTROPHIC_MCA_ERROR?????????0x93
->> > +#define PECI_CC_FATAL_MCA_ERROR????????????????????????0x94
->> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB????????????????0x98
->> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB_IERR???0x9B
->> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB_MCA????0x9C
->> > +
->> > +#define PECI_RETRY_BIT?????????????????BIT(0)
->> > +
->> > +#define PECI_RETRY_TIMEOUT?????????????msecs_to_jiffies(700)
->> > +#define PECI_RETRY_INTERVAL_MIN????????????????msecs_to_jiffies(1)
->> > +#define PECI_RETRY_INTERVAL_MAX????????????????msecs_to_jiffies(128)
+>> > +#define PECI_CC_SUCCESS                                0x40
+>> > +#define PECI_CC_NEED_RETRY                     0x80
+>> > +#define PECI_CC_OUT_OF_RESOURCE                        0x81
+>> > +#define PECI_CC_UNAVAIL_RESOURCE               0x82
+>> > +#define PECI_CC_INVALID_REQ                    0x90
+>> > +#define PECI_CC_MCA_ERROR                      0x91
+>> > +#define PECI_CC_CATASTROPHIC_MCA_ERROR         0x93
+>> > +#define PECI_CC_FATAL_MCA_ERROR                        0x94
+>> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB                0x98
+>> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB_IERR   0x9B
+>> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB_MCA    0x9C
+>> > +
+>> > +#define PECI_RETRY_BIT                 BIT(0)
+>> > +
+>> > +#define PECI_RETRY_TIMEOUT             msecs_to_jiffies(700)
+>> > +#define PECI_RETRY_INTERVAL_MIN                msecs_to_jiffies(1)
+>> > +#define PECI_RETRY_INTERVAL_MAX                msecs_to_jiffies(128)
 >> > +
 >> > +static u8 peci_request_data_cc(struct peci_request *req)
 >> > +{
->> > +???????return req->rx.buf[0];
+>> > +       return req->rx.buf[0];
 >> > +}
 >> > +
 >> > +/**
@@ -461,175 +461,175 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >> > + */
 >> > +int peci_request_status(struct peci_request *req)
 >> > +{
->> > +???????u8 cc = peci_request_data_cc(req);
->> > +
->> > +???????if (cc != PECI_CC_SUCCESS)
->> > +???????????????dev_dbg(&req->device->dev, "ret: %#02x\n", cc);
->> > +
->> > +???????switch (cc) {
->> > +???????case PECI_CC_SUCCESS:
->> > +???????????????return 0;
->> > +???????case PECI_CC_NEED_RETRY:
->> > +???????case PECI_CC_OUT_OF_RESOURCE:
->> > +???????case PECI_CC_UNAVAIL_RESOURCE:
->> > +???????????????return -EAGAIN;
->> > +???????case PECI_CC_INVALID_REQ:
->> > +???????????????return -EINVAL;
->> > +???????case PECI_CC_MCA_ERROR:
->> > +???????case PECI_CC_CATASTROPHIC_MCA_ERROR:
->> > +???????case PECI_CC_FATAL_MCA_ERROR:
->> > +???????case PECI_CC_PARITY_ERR_GPSB_OR_PMSB:
->> > +???????case PECI_CC_PARITY_ERR_GPSB_OR_PMSB_IERR:
->> > +???????case PECI_CC_PARITY_ERR_GPSB_OR_PMSB_MCA:
->> > +???????????????return -EIO;
->> > +???????}
->> > +
->> > +???????WARN_ONCE(1, "Unknown PECI completion code: %#02x\n", cc);
->> > +
->> > +???????return -EIO;
+>> > +       u8 cc = peci_request_data_cc(req);
+>> > +
+>> > +       if (cc != PECI_CC_SUCCESS)
+>> > +               dev_dbg(&req->device->dev, "ret: %#02x\n", cc);
+>> > +
+>> > +       switch (cc) {
+>> > +       case PECI_CC_SUCCESS:
+>> > +               return 0;
+>> > +       case PECI_CC_NEED_RETRY:
+>> > +       case PECI_CC_OUT_OF_RESOURCE:
+>> > +       case PECI_CC_UNAVAIL_RESOURCE:
+>> > +               return -EAGAIN;
+>> > +       case PECI_CC_INVALID_REQ:
+>> > +               return -EINVAL;
+>> > +       case PECI_CC_MCA_ERROR:
+>> > +       case PECI_CC_CATASTROPHIC_MCA_ERROR:
+>> > +       case PECI_CC_FATAL_MCA_ERROR:
+>> > +       case PECI_CC_PARITY_ERR_GPSB_OR_PMSB:
+>> > +       case PECI_CC_PARITY_ERR_GPSB_OR_PMSB_IERR:
+>> > +       case PECI_CC_PARITY_ERR_GPSB_OR_PMSB_MCA:
+>> > +               return -EIO;
+>> > +       }
+>> > +
+>> > +       WARN_ONCE(1, "Unknown PECI completion code: %#02x\n", cc);
+>> > +
+>> > +       return -EIO;
 >> > +}
 >> > +EXPORT_SYMBOL_NS_GPL(peci_request_status, PECI);
 >> > +
 >> > +static int peci_request_xfer(struct peci_request *req)
 >> > +{
->> > +???????struct peci_device *device = req->device;
->> > +???????struct peci_controller *controller = device->controller;
->> > +???????int ret;
+>> > +       struct peci_device *device = req->device;
+>> > +       struct peci_controller *controller = device->controller;
+>> > +       int ret;
 >> > +
->> > +???????mutex_lock(&controller->bus_lock);
->> > +???????ret = controller->xfer(controller, device->addr, req);
->> > +???????mutex_unlock(&controller->bus_lock);
+>> > +       mutex_lock(&controller->bus_lock);
+>> > +       ret = controller->xfer(controller, device->addr, req);
+>> > +       mutex_unlock(&controller->bus_lock);
 >> > +
->> > +???????return ret;
+>> > +       return ret;
 >> > +}
 >> > +
 >> > +static int peci_request_xfer_retry(struct peci_request *req)
 >> > +{
->> > +???????long wait_interval = PECI_RETRY_INTERVAL_MIN;
->> > +???????struct peci_device *device = req->device;
->> > +???????struct peci_controller *controller = device->controller;
->> > +???????unsigned long start = jiffies;
->> > +???????int ret;
->> > +
->> > +???????/* Don't try to use it for ping */
->> > +???????if (WARN_ON(!req->rx.buf))
->> > +???????????????return 0;
->> > +
->> > +???????do {
->> > +???????????????ret = peci_request_xfer(req);
->> > +???????????????if (ret) {
->> > +???????????????????????dev_dbg(&controller->dev, "xfer error: %d\n", ret);
->> > +???????????????????????return ret;
->> > +???????????????}
->> > +
->> > +???????????????if (peci_request_status(req) != -EAGAIN)
->> > +???????????????????????return 0;
->> > +
->> > +???????????????/* Set the retry bit to indicate a retry attempt */
->> > +???????????????req->tx.buf[1] |= PECI_RETRY_BIT;
->> > +
->> > +???????????????if (schedule_timeout_interruptible(wait_interval))
->> > +???????????????????????return -ERESTARTSYS;
->> > +
->> > +???????????????wait_interval *= 2;
->> > +???????????????if (wait_interval > PECI_RETRY_INTERVAL_MAX)
->> > +???????????????????????wait_interval = PECI_RETRY_INTERVAL_MAX;
+>> > +       long wait_interval = PECI_RETRY_INTERVAL_MIN;
+>> > +       struct peci_device *device = req->device;
+>> > +       struct peci_controller *controller = device->controller;
+>> > +       unsigned long start = jiffies;
+>> > +       int ret;
+>> > +
+>> > +       /* Don't try to use it for ping */
+>> > +       if (WARN_ON(!req->rx.buf))
+>> > +               return 0;
+>> > +
+>> > +       do {
+>> > +               ret = peci_request_xfer(req);
+>> > +               if (ret) {
+>> > +                       dev_dbg(&controller->dev, "xfer error: %d\n", ret);
+>> > +                       return ret;
+>> > +               }
+>> > +
+>> > +               if (peci_request_status(req) != -EAGAIN)
+>> > +                       return 0;
+>> > +
+>> > +               /* Set the retry bit to indicate a retry attempt */
+>> > +               req->tx.buf[1] |= PECI_RETRY_BIT;
+>> > +
+>> > +               if (schedule_timeout_interruptible(wait_interval))
+>> > +                       return -ERESTARTSYS;
+>> > +
+>> > +               wait_interval *= 2;
+>> > +               if (wait_interval > PECI_RETRY_INTERVAL_MAX)
+>> > +                       wait_interval = PECI_RETRY_INTERVAL_MAX;
 >>
 >> wait_interval = min(wait_interval * 2, PECI_RETRY_INTERVAL_MAX) ?
 >
 >Ack.
 >
 >>
->> > +???????} while (time_before(jiffies, start + PECI_RETRY_TIMEOUT));
+>> > +       } while (time_before(jiffies, start + PECI_RETRY_TIMEOUT));
 >> > +
->> > +???????dev_dbg(&controller->dev, "request timed out\n");
+>> > +       dev_dbg(&controller->dev, "request timed out\n");
 >> > +
->> > +???????return -ETIMEDOUT;
+>> > +       return -ETIMEDOUT;
 >> > +}
 >> > +
 >> > /**
->> > ?* peci_request_alloc() - allocate &struct peci_request with buffers with
+>> >  * peci_request_alloc() - allocate &struct peci_request with buffers with
 >> > given lengths
->> > ?* @device: PECI device to which request is going to be sent
+>> >  * @device: PECI device to which request is going to be sent
 >> > @@ -72,3 +201,91 @@ void peci_request_free(struct peci_request *req)
->> > ????????kfree(req);
+>> >         kfree(req);
 >> > }
 >> > EXPORT_SYMBOL_NS_GPL(peci_request_free, PECI);
 >> > +
 >> > +struct peci_request *peci_get_dib(struct peci_device *device)
 >> > +{
->> > +???????struct peci_request *req;
->> > +???????int ret;
+>> > +       struct peci_request *req;
+>> > +       int ret;
 >> > +
->> > +???????req = peci_request_alloc(device, PECI_GET_DIB_WR_LEN,
+>> > +       req = peci_request_alloc(device, PECI_GET_DIB_WR_LEN,
 >> > PECI_GET_DIB_RD_LEN);
->> > +???????if (!req)
->> > +???????????????return ERR_PTR(-ENOMEM);
+>> > +       if (!req)
+>> > +               return ERR_PTR(-ENOMEM);
 >> > +
->> > +???????req->tx.buf[0] = PECI_GET_DIB_CMD;
+>> > +       req->tx.buf[0] = PECI_GET_DIB_CMD;
 >> > +
->> > +???????ret = peci_request_xfer(req);
->> > +???????if (ret) {
->> > +???????????????peci_request_free(req);
->> > +???????????????return ERR_PTR(ret);
->> > +???????}
+>> > +       ret = peci_request_xfer(req);
+>> > +       if (ret) {
+>> > +               peci_request_free(req);
+>> > +               return ERR_PTR(ret);
+>> > +       }
 >> > +
->> > +???????return req;
+>> > +       return req;
 >> > +}
 >> > +EXPORT_SYMBOL_NS_GPL(peci_get_dib, PECI);
 >> > +
 >> > +static struct peci_request *
 >> > +__pkg_cfg_read(struct peci_device *device, u8 index, u16 param, u8 len)
 >> > +{
->> > +???????struct peci_request *req;
->> > +???????int ret;
->> > +
->> > +???????req = peci_request_alloc(device, PECI_RDPKGCFG_WRITE_LEN,
->> > +??????????????????????????????? PECI_RDPKGCFG_READ_LEN_BASE + len);
->> > +???????if (!req)
->> > +???????????????return ERR_PTR(-ENOMEM);
->> > +
->> > +???????req->tx.buf[0] = PECI_RDPKGCFG_CMD;
->> > +???????req->tx.buf[1] = 0;
->> > +???????req->tx.buf[2] = index;
->> > +???????put_unaligned_le16(param, &req->tx.buf[3]);
->> > +
->> > +???????ret = peci_request_xfer_retry(req);
->> > +???????if (ret) {
->> > +???????????????peci_request_free(req);
->> > +???????????????return ERR_PTR(ret);
->> > +???????}
->> > +
->> > +???????return req;
+>> > +       struct peci_request *req;
+>> > +       int ret;
+>> > +
+>> > +       req = peci_request_alloc(device, PECI_RDPKGCFG_WRITE_LEN,
+>> > +                                PECI_RDPKGCFG_READ_LEN_BASE + len);
+>> > +       if (!req)
+>> > +               return ERR_PTR(-ENOMEM);
+>> > +
+>> > +       req->tx.buf[0] = PECI_RDPKGCFG_CMD;
+>> > +       req->tx.buf[1] = 0;
+>> > +       req->tx.buf[2] = index;
+>> > +       put_unaligned_le16(param, &req->tx.buf[3]);
+>> > +
+>> > +       ret = peci_request_xfer_retry(req);
+>> > +       if (ret) {
+>> > +               peci_request_free(req);
+>> > +               return ERR_PTR(ret);
+>> > +       }
+>> > +
+>> > +       return req;
 >> > +}
 >> > +
 >> > +u8 peci_request_data_readb(struct peci_request *req)
 >> > +{
->> > +???????return req->rx.buf[1];
+>> > +       return req->rx.buf[1];
 >> > +}
 >> > +EXPORT_SYMBOL_NS_GPL(peci_request_data_readb, PECI);
 >> > +
 >> > +u16 peci_request_data_readw(struct peci_request *req)
 >> > +{
->> > +???????return get_unaligned_le16(&req->rx.buf[1]);
+>> > +       return get_unaligned_le16(&req->rx.buf[1]);
 >> > +}
 >> > +EXPORT_SYMBOL_NS_GPL(peci_request_data_readw, PECI);
 >> > +
 >> > +u32 peci_request_data_readl(struct peci_request *req)
 >> > +{
->> > +???????return get_unaligned_le32(&req->rx.buf[1]);
+>> > +       return get_unaligned_le32(&req->rx.buf[1]);
 >> > +}
 >> > +EXPORT_SYMBOL_NS_GPL(peci_request_data_readl, PECI);
 >> > +
 >> > +u64 peci_request_data_readq(struct peci_request *req)
 >> > +{
->> > +???????return get_unaligned_le64(&req->rx.buf[1]);
+>> > +       return get_unaligned_le64(&req->rx.buf[1]);
 >> > +}
 >> > +EXPORT_SYMBOL_NS_GPL(peci_request_data_readq, PECI);
 >> > +
 >> > +u64 peci_request_data_dib(struct peci_request *req)
 >> > +{
->> > +???????return get_unaligned_le64(&req->rx.buf[0]);
+>> > +       return get_unaligned_le64(&req->rx.buf[0]);
 >> > +}
 >> > +EXPORT_SYMBOL_NS_GPL(peci_request_data_dib, PECI);
 >> > +
@@ -637,10 +637,10 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >> > +struct peci_request *peci_pkg_cfg_##x(struct peci_device *device, u8 index,
 >> > u16 param) \
 >> > +{ \
->> > +???????return __pkg_cfg_read(device, index, param, sizeof(type)); \
+>> > +       return __pkg_cfg_read(device, index, param, sizeof(type)); \
 >> > +} \
 >>
->> Is there a reason for this particular API?? I'd think a more natural one
+>> Is there a reason for this particular API?  I'd think a more natural one
 >> that would offload a bit of boilerplate from callers would look more like
 >>
 >> int peci_pkg_cfg_##x(struct peci_device *device, u8 index, u16 param, type
@@ -672,42 +672,42 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >> > #include <linux/mutex.h>
 >> > #include <linux/types.h>
 >> >
->> > +#define PECI_PCS_PKG_ID????????????????????????0? /* Package Identifier
+>> > +#define PECI_PCS_PKG_ID                        0  /* Package Identifier
 >> > Read */
->> > +#define? PECI_PKG_ID_CPU_ID????????????0x0000? /* CPUID Info */
->> > +#define? PECI_PKG_ID_PLATFORM_ID???????0x0001? /* Platform ID */
->> > +#define? PECI_PKG_ID_DEVICE_ID?????????0x0002? /* Uncore Device ID */
->> > +#define? PECI_PKG_ID_MAX_THREAD_ID?????0x0003? /* Max Thread ID */
->> > +#define? PECI_PKG_ID_MICROCODE_REV?????0x0004? /* CPU Microcode Update
+>> > +#define  PECI_PKG_ID_CPU_ID            0x0000  /* CPUID Info */
+>> > +#define  PECI_PKG_ID_PLATFORM_ID       0x0001  /* Platform ID */
+>> > +#define  PECI_PKG_ID_DEVICE_ID         0x0002  /* Uncore Device ID */
+>> > +#define  PECI_PKG_ID_MAX_THREAD_ID     0x0003  /* Max Thread ID */
+>> > +#define  PECI_PKG_ID_MICROCODE_REV     0x0004  /* CPU Microcode Update
 >> > Revision */
->> > +#define? PECI_PKG_ID_MCA_ERROR_LOG?????0x0005? /* Machine Check Status */
+>> > +#define  PECI_PKG_ID_MCA_ERROR_LOG     0x0005  /* Machine Check Status */
 >> > +
 >> > struct peci_request;
 >> >
 >> > /**
 >> > @@ -41,6 +49,11 @@ static inline struct peci_controller
 >> > *to_peci_controller(void *d)
->> > ?* struct peci_device - PECI device
->> > ?* @dev: device object to register PECI device to the device model
->> > ?* @controller: manages the bus segment hosting this PECI device
+>> >  * struct peci_device - PECI device
+>> >  * @dev: device object to register PECI device to the device model
+>> >  * @controller: manages the bus segment hosting this PECI device
 >> > + * @info: PECI device characteristics
 >> > + * @info.family: device family
 >> > + * @info.model: device model
 >> > + * @info.peci_revision: PECI revision supported by the PECI device
 >> > + * @info.socket_id: the socket ID represented by the PECI device
->> > ?* @addr: address used on the PECI bus connected to the parent controller
->> > ?*
->> > ?* A peci_device identifies a single device (i.e. CPU) connected to a PECI
+>> >  * @addr: address used on the PECI bus connected to the parent controller
+>> >  *
+>> >  * A peci_device identifies a single device (i.e. CPU) connected to a PECI
 >> > bus.
 >> > @@ -50,6 +63,12 @@ static inline struct peci_controller
 >> > *to_peci_controller(void *d)
 >> > struct peci_device {
->> > ????????struct device dev;
->> > ????????struct peci_controller *controller;
->> > +???????struct {
->> > +???????????????u16 family;
->> > +???????????????u8 model;
->> > +???????????????u8 peci_revision;
+>> >         struct device dev;
+>> >         struct peci_controller *controller;
+>> > +       struct {
+>> > +               u16 family;
+>> > +               u8 model;
+>> > +               u8 peci_revision;
 >>
 >> This field gets set but doesn't seem to end up used anywhere; is it
 >> useful?
@@ -722,9 +722,9 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >-Iwona
 >
 >>
->> > +???????????????u8 socket_id;
->> > +???????} info;
->> > ????????u8 addr;
+>> > +               u8 socket_id;
+>> > +       } info;
+>> >         u8 addr;
 >> > };
 >> >
 >> > diff --git a/lib/Kconfig b/lib/Kconfig
@@ -734,10 +734,14 @@ written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.
 >> > @@ -721,5 +721,5 @@ config ASN1_ENCODER
 >> >
 >> > config GENERIC_LIB_X86
->> > ????????bool
->> > -???????depends on X86
->> > +???????depends on X86 || PECI
->> > ????????default n
+>> >         bool
+>> > -       depends on X86
+>> > +       depends on X86 || PECI
+>> >         default n
 >> > --
 >> > 2.31.1
 >
+_______________________________________________
+linux-arm-kernel mailing list
+linux-arm-kernel@lists.infradead.org
+http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
diff --git a/a/content_digest b/N3/content_digest
index 315ee2f..5e1d746 100644
--- a/a/content_digest
+++ b/N3/content_digest
@@ -3,9 +3,36 @@
  "ref\020210727201028.GS8018@packtop\0"
  "ref\079f5b6ed4942ddeb66beea03907a58495376ccef.camel@intel.com\0"
  "From\0Zev Weiss <zweiss@equinix.com>\0"
- "Subject\0[PATCH 09/14] peci: Add support for PECI device drivers\0"
+ "Subject\0Re: [PATCH 09/14] peci: Add support for PECI device drivers\0"
  "Date\0Thu, 29 Jul 2021 23:22:06 +0000\0"
- "To\0linux-aspeed@lists.ozlabs.org\0"
+ "To\0Winiarska"
+ " Iwona <iwona.winiarska@intel.com>\0"
+ "Cc\0corbet@lwn.net <corbet@lwn.net>"
+  jae.hyun.yoo@linux.intel.com <jae.hyun.yoo@linux.intel.com>
+  Lutomirski
+  Andy <luto@kernel.org>
+  linux-hwmon@vger.kernel.org <linux-hwmon@vger.kernel.org>
+  Luck
+  Tony <tony.luck@intel.com>
+  andrew@aj.id.au <andrew@aj.id.au>
+  mchehab@kernel.org <mchehab@kernel.org>
+  jdelvare@suse.com <jdelvare@suse.com>
+  linux-kernel@vger.kernel.org <linux-kernel@vger.kernel.org>
+  mingo@redhat.com <mingo@redhat.com>
+  devicetree@vger.kernel.org <devicetree@vger.kernel.org>
+  tglx@linutronix.de <tglx@linutronix.de>
+  linux@roeck-us.net <linux@roeck-us.net>
+  linux-aspeed@lists.ozlabs.org <linux-aspeed@lists.ozlabs.org>
+  linux-doc@vger.kernel.org <linux-doc@vger.kernel.org>
+  yazen.ghannam@amd.com <yazen.ghannam@amd.com>
+  robh+dt@kernel.org <robh+dt@kernel.org>
+  openbmc@lists.ozlabs.org <openbmc@lists.ozlabs.org>
+  bp@alien8.de <bp@alien8.de>
+  linux-arm-kernel@lists.infradead.org <linux-arm-kernel@lists.infradead.org>
+  pierre-louis.bossart@linux.intel.com <pierre-louis.bossart@linux.intel.com>
+  andriy.shevchenko@linux.intel.com <andriy.shevchenko@linux.intel.com>
+  x86@kernel.org <x86@kernel.org>
+ " gregkh@linuxfoundation.org <gregkh@linuxfoundation.org>\0"
  "\00:1\0"
  "b\0"
  "On Thu, Jul 29, 2021 at 04:17:06PM CDT, Winiarska, Iwona wrote:\n"
@@ -22,13 +49,13 @@
  ">> > Signed-off-by: Iwona Winiarska <iwona.winiarska@intel.com>\n"
  ">> > Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>\n"
  ">> > ---\n"
- ">> > drivers/peci/Kconfig??? |?? 1 +\n"
- ">> > drivers/peci/core.c???? |? 49 +++++++++\n"
- ">> > drivers/peci/device.c?? |? 99 ++++++++++++++++++\n"
- ">> > drivers/peci/internal.h |? 75 ++++++++++++++\n"
- ">> > drivers/peci/request.c? | 217 ++++++++++++++++++++++++++++++++++++++++\n"
- ">> > include/linux/peci.h??? |? 19 ++++\n"
- ">> > lib/Kconfig???????????? |?? 2 +-\n"
+ ">> > drivers/peci/Kconfig\302\240\302\240\302\240 |\302\240\302\240 1 +\n"
+ ">> > drivers/peci/core.c\302\240\302\240\302\240\302\240 |\302\240 49 +++++++++\n"
+ ">> > drivers/peci/device.c\302\240\302\240 |\302\240 99 ++++++++++++++++++\n"
+ ">> > drivers/peci/internal.h |\302\240 75 ++++++++++++++\n"
+ ">> > drivers/peci/request.c\302\240 | 217 ++++++++++++++++++++++++++++++++++++++++\n"
+ ">> > include/linux/peci.h\302\240\302\240\302\240 |\302\240 19 ++++\n"
+ ">> > lib/Kconfig\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 |\302\240\302\240 2 +-\n"
  ">> > 7 files changed, 461 insertions(+), 1 deletion(-)\n"
  ">> >\n"
  ">> > diff --git a/drivers/peci/Kconfig b/drivers/peci/Kconfig\n"
@@ -38,11 +65,11 @@
  ">> > @@ -2,6 +2,7 @@\n"
  ">> >\n"
  ">> > menuconfig PECI\n"
- ">> > ????????tristate \"PECI support\"\n"
- ">> > +???????select GENERIC_LIB_X86\n"
- ">> > ????????help\n"
- ">> > ????????? The Platform Environment Control Interface (PECI) is an interface\n"
- ">> > ????????? that provides a communication channel to Intel processors and\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240tristate \"PECI support\"\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240select GENERIC_LIB_X86\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240help\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 The Platform Environment Control Interface (PECI) is an interface\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 that provides a communication channel to Intel processors and\n"
  ">> > diff --git a/drivers/peci/core.c b/drivers/peci/core.c\n"
  ">> > index ae7a9572cdf3..94426b7f2618 100644\n"
  ">> > --- a/drivers/peci/core.c\n"
@@ -56,57 +83,57 @@
  ">> > +peci_bus_match_device_id(const struct peci_device_id *id, struct\n"
  ">> > peci_device *device)\n"
  ">> > +{\n"
- ">> > +???????while (id->family != 0) {\n"
- ">> > +???????????????if (id->family == device->info.family &&\n"
- ">> > +?????????????????? id->model == device->info.model)\n"
- ">> > +???????????????????????return id;\n"
- ">> > +???????????????id++;\n"
- ">> > +???????}\n"
- ">> > +\n"
- ">> > +???????return NULL;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240while (id->family != 0) {\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (id->family == device->info.family &&\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 id->model == device->info.model)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return id;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240id++;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return NULL;\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > +static int peci_bus_device_match(struct device *dev, struct device_driver\n"
  ">> > *drv)\n"
  ">> > +{\n"
- ">> > +???????struct peci_device *device = to_peci_device(dev);\n"
- ">> > +???????struct peci_driver *peci_drv = to_peci_driver(drv);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_device *device = to_peci_device(dev);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_driver *peci_drv = to_peci_driver(drv);\n"
  ">> > +\n"
- ">> > +???????if (dev->type != &peci_device_type)\n"
- ">> > +???????????????return 0;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (dev->type != &peci_device_type)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return 0;\n"
  ">> > +\n"
- ">> > +???????if (peci_bus_match_device_id(peci_drv->id_table, device))\n"
- ">> > +???????????????return 1;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (peci_bus_match_device_id(peci_drv->id_table, device))\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return 1;\n"
  ">> > +\n"
- ">> > +???????return 0;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return 0;\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > +static int peci_bus_device_probe(struct device *dev)\n"
  ">> > +{\n"
- ">> > +???????struct peci_device *device = to_peci_device(dev);\n"
- ">> > +???????struct peci_driver *driver = to_peci_driver(dev->driver);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_device *device = to_peci_device(dev);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_driver *driver = to_peci_driver(dev->driver);\n"
  ">> > +\n"
- ">> > +???????return driver->probe(device, peci_bus_match_device_id(driver-\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return driver->probe(device, peci_bus_match_device_id(driver-\n"
  ">> > >id_table, device));\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > +static int peci_bus_device_remove(struct device *dev)\n"
  ">> > +{\n"
- ">> > +???????struct peci_device *device = to_peci_device(dev);\n"
- ">> > +???????struct peci_driver *driver = to_peci_driver(dev->driver);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_device *device = to_peci_device(dev);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_driver *driver = to_peci_driver(dev->driver);\n"
  ">> > +\n"
- ">> > +???????if (driver->remove)\n"
- ">> > +???????????????driver->remove(device);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (driver->remove)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240driver->remove(device);\n"
  ">> > +\n"
- ">> > +???????return 0;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return 0;\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > struct bus_type peci_bus_type = {\n"
- ">> > ????????.name???????????= \"peci\",\n"
- ">> > +???????.match??????????= peci_bus_device_match,\n"
- ">> > +???????.probe??????????= peci_bus_device_probe,\n"
- ">> > +???????.remove?????????= peci_bus_device_remove,\n"
- ">> > ????????.bus_groups?????= peci_bus_groups,\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240.name\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240= \"peci\",\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240.match\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240= peci_bus_device_match,\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240.probe\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240= peci_bus_device_probe,\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240.remove\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240= peci_bus_device_remove,\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240.bus_groups\302\240\302\240\302\240\302\240\302\240= peci_bus_groups,\n"
  ">> > };\n"
  ">> >\n"
  ">> > diff --git a/drivers/peci/device.c b/drivers/peci/device.c\n"
@@ -127,19 +154,19 @@
  ">> > +#define REVISION_NUM_MASK GENMASK(15, 8)\n"
  ">> > +static int peci_get_revision(struct peci_device *device, u8 *revision)\n"
  ">> > +{\n"
- ">> > +???????struct peci_request *req;\n"
- ">> > +???????u64 dib;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_request *req;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240u64 dib;\n"
  ">> > +\n"
- ">> > +???????req = peci_get_dib(device);\n"
- ">> > +???????if (IS_ERR(req))\n"
- ">> > +???????????????return PTR_ERR(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240req = peci_get_dib(device);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (IS_ERR(req))\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return PTR_ERR(req);\n"
  ">> > +\n"
- ">> > +???????dib = peci_request_data_dib(req);\n"
- ">> > +???????if (dib == 0) {\n"
- ">> > +???????????????peci_request_free(req);\n"
- ">> > +???????????????return -EIO;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240dib = peci_request_data_dib(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (dib == 0) {\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240peci_request_free(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return -EIO;\n"
  ">>\n"
- ">> Any particular reason to check for zero specifically here?? It looks\n"
+ ">> Any particular reason to check for zero specifically here?\302\240 It looks\n"
  ">> like that would be a case where the host CPU responds and everything's\n"
  ">> otherwise fine, but the host just happened to send back a bunch of zeros\n"
  ">> for whatever reason -- which may not be a valid PECI revision number,\n"
@@ -179,30 +206,30 @@
  "written as !memchr_inv(req->rx.buf, 0, 8) in the non-u64 case.\n"
  "\n"
  ">>\n"
- ">> > +???????}\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\n"
  ">> > +\n"
- ">> > +???????*revision = FIELD_GET(REVISION_NUM_MASK, dib);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240*revision = FIELD_GET(REVISION_NUM_MASK, dib);\n"
  ">> > +\n"
- ">> > +???????peci_request_free(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240peci_request_free(req);\n"
  ">> > +\n"
- ">> > +???????return 0;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return 0;\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > +static int peci_get_cpu_id(struct peci_device *device, u32 *cpu_id)\n"
  ">> > +{\n"
- ">> > +???????struct peci_request *req;\n"
- ">> > +???????int ret;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_request *req;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240int ret;\n"
  ">> > +\n"
- ">> > +???????req = peci_pkg_cfg_readl(device, PECI_PCS_PKG_ID,\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240req = peci_pkg_cfg_readl(device, PECI_PCS_PKG_ID,\n"
  ">> > PECI_PKG_ID_CPU_ID);\n"
- ">> > +???????if (IS_ERR(req))\n"
- ">> > +???????????????return PTR_ERR(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (IS_ERR(req))\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return PTR_ERR(req);\n"
  ">> > +\n"
- ">> > +???????ret = peci_request_status(req);\n"
- ">> > +???????if (ret)\n"
- ">> > +???????????????goto out_req_free;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = peci_request_status(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (ret)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240goto out_req_free;\n"
  ">> > +\n"
- ">> > +???????*cpu_id = peci_request_data_readl(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240*cpu_id = peci_request_data_readl(req);\n"
  ">> > +out_req_free:\n"
  ">>\n"
  ">> As suggested on patch #8, I think it might be cleaner to stack-allocate\n"
@@ -210,8 +237,8 @@
  ">> calls in functions like this and hence might simplify it away entirely,\n"
  ">> but if this does remain like this we could just do\n"
  ">>\n"
- ">> ????????if (!ret)\n"
- ">> ????????????????*cpu_id = peci_request_data_readl(req);\n"
+ ">> \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (!ret)\n"
+ ">> \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240*cpu_id = peci_request_data_readl(req);\n"
  ">>\n"
  ">> instead of using a goto to skip a single line.\n"
  ">\n"
@@ -221,87 +248,87 @@
  ">case of peci requests.\n"
  ">\n"
  ">>\n"
- ">> > +???????peci_request_free(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240peci_request_free(req);\n"
  ">> > +\n"
- ">> > +???????return ret;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return ret;\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > +static int peci_device_info_init(struct peci_device *device)\n"
  ">> > +{\n"
- ">> > +???????u8 revision;\n"
- ">> > +???????u32 cpu_id;\n"
- ">> > +???????int ret;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240u8 revision;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240u32 cpu_id;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240int ret;\n"
  ">> > +\n"
- ">> > +???????ret = peci_get_cpu_id(device, &cpu_id);\n"
- ">> > +???????if (ret)\n"
- ">> > +???????????????return ret;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = peci_get_cpu_id(device, &cpu_id);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (ret)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return ret;\n"
  ">> > +\n"
- ">> > +???????device->info.family = x86_family(cpu_id);\n"
- ">> > +???????device->info.model = x86_model(cpu_id);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240device->info.family = x86_family(cpu_id);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240device->info.model = x86_model(cpu_id);\n"
  ">> > +\n"
- ">> > +???????ret = peci_get_revision(device, &revision);\n"
- ">> > +???????if (ret)\n"
- ">> > +???????????????return ret;\n"
- ">> > +???????device->info.peci_revision = revision;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = peci_get_revision(device, &revision);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (ret)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return ret;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240device->info.peci_revision = revision;\n"
  ">> > +\n"
- ">> > +???????device->info.socket_id = device->addr - PECI_BASE_ADDR;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240device->info.socket_id = device->addr - PECI_BASE_ADDR;\n"
  ">> > +\n"
- ">> > +???????return 0;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return 0;\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > static int peci_detect(struct peci_controller *controller, u8 addr)\n"
  ">> > {\n"
- ">> > ????????struct peci_request *req;\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_request *req;\n"
  ">> > @@ -75,6 +143,10 @@ int peci_device_create(struct peci_controller\n"
  ">> > *controller, u8 addr)\n"
- ">> > ????????device->dev.bus = &peci_bus_type;\n"
- ">> > ????????device->dev.type = &peci_device_type;\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240device->dev.bus = &peci_bus_type;\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240device->dev.type = &peci_device_type;\n"
  ">> >\n"
- ">> > +???????ret = peci_device_info_init(device);\n"
- ">> > +???????if (ret)\n"
- ">> > +???????????????goto err_free;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = peci_device_info_init(device);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (ret)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240goto err_free;\n"
  ">> > +\n"
- ">> > ????????ret = dev_set_name(&device->dev, \"%d-%02x\", controller->id, device-\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = dev_set_name(&device->dev, \"%d-%02x\", controller->id, device-\n"
  ">> > >addr);\n"
- ">> > ????????if (ret)\n"
- ">> > ????????????????goto err_free;\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (ret)\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240goto err_free;\n"
  ">> > @@ -98,6 +170,33 @@ void peci_device_destroy(struct peci_device *device)\n"
- ">> > ????????device_unregister(&device->dev);\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240device_unregister(&device->dev);\n"
  ">> > }\n"
  ">> >\n"
  ">> > +int __peci_driver_register(struct peci_driver *driver, struct module\n"
  ">> > *owner,\n"
- ">> > +????????????????????????? const char *mod_name)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 const char *mod_name)\n"
  ">> > +{\n"
- ">> > +???????driver->driver.bus = &peci_bus_type;\n"
- ">> > +???????driver->driver.owner = owner;\n"
- ">> > +???????driver->driver.mod_name = mod_name;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240driver->driver.bus = &peci_bus_type;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240driver->driver.owner = owner;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240driver->driver.mod_name = mod_name;\n"
  ">> > +\n"
- ">> > +???????if (!driver->probe) {\n"
- ">> > +???????????????pr_err(\"peci: trying to register driver without probe\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (!driver->probe) {\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240pr_err(\"peci: trying to register driver without probe\n"
  ">> > callback\\n\");\n"
- ">> > +???????????????return -EINVAL;\n"
- ">> > +???????}\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return -EINVAL;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\n"
  ">> > +\n"
- ">> > +???????if (!driver->id_table) {\n"
- ">> > +???????????????pr_err(\"peci: trying to register driver without device id\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (!driver->id_table) {\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240pr_err(\"peci: trying to register driver without device id\n"
  ">> > table\\n\");\n"
- ">> > +???????????????return -EINVAL;\n"
- ">> > +???????}\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return -EINVAL;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\n"
  ">> > +\n"
- ">> > +???????return driver_register(&driver->driver);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return driver_register(&driver->driver);\n"
  ">> > +}\n"
  ">> > +EXPORT_SYMBOL_NS_GPL(__peci_driver_register, PECI);\n"
  ">> > +\n"
  ">> > +void peci_driver_unregister(struct peci_driver *driver)\n"
  ">> > +{\n"
- ">> > +???????driver_unregister(&driver->driver);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240driver_unregister(&driver->driver);\n"
  ">> > +}\n"
  ">> > +EXPORT_SYMBOL_NS_GPL(peci_driver_unregister, PECI);\n"
  ">> > +\n"
  ">> > static void peci_device_release(struct device *dev)\n"
  ">> > {\n"
- ">> > ????????struct peci_device *device = to_peci_device(dev);\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_device *device = to_peci_device(dev);\n"
  ">> > diff --git a/drivers/peci/internal.h b/drivers/peci/internal.h\n"
  ">> > index 6b139adaf6b8..c891c93e077a 100644\n"
  ">> > --- a/drivers/peci/internal.h\n"
@@ -338,9 +365,9 @@
  ">> > + * @model: device model\n"
  ">> > + */\n"
  ">> > +struct peci_device_id {\n"
- ">> > +???????const void *data;\n"
- ">> > +???????u16 family;\n"
- ">> > +???????u8 model;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240const void *data;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240u16 family;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240u8 model;\n"
  ">> > +};\n"
  ">> > +\n"
  ">> > extern struct device_type peci_device_type;\n"
@@ -358,21 +385,21 @@
  ">> > + * @id_table: PECI device match table to decide which device to bind\n"
  ">> > + */\n"
  ">> > +struct peci_driver {\n"
- ">> > +???????struct device_driver driver;\n"
- ">> > +???????int (*probe)(struct peci_device *device, const struct peci_device_id\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct device_driver driver;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240int (*probe)(struct peci_device *device, const struct peci_device_id\n"
  ">> > *id);\n"
- ">> > +???????void (*remove)(struct peci_device *device);\n"
- ">> > +???????const struct peci_device_id *id_table;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240void (*remove)(struct peci_device *device);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240const struct peci_device_id *id_table;\n"
  ">> > +};\n"
  ">> > +\n"
  ">> > +static inline struct peci_driver *to_peci_driver(struct device_driver *d)\n"
  ">> > +{\n"
- ">> > +???????return container_of(d, struct peci_driver, driver);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return container_of(d, struct peci_driver, driver);\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > +int __peci_driver_register(struct peci_driver *driver, struct module\n"
  ">> > *owner,\n"
- ">> > +????????????????????????? const char *mod_name);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 const char *mod_name);\n"
  ">> > +/**\n"
  ">> > + * peci_driver_register() - register PECI driver\n"
  ">> > + * @driver: the driver to be registered\n"
@@ -386,7 +413,7 @@
  ">> > + * Return: zero on success, else a negative error code.\n"
  ">> > + */\n"
  ">> > +#define peci_driver_register(driver) \\\n"
- ">> > +???????__peci_driver_register(driver, THIS_MODULE, KBUILD_MODNAME)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240__peci_driver_register(driver, THIS_MODULE, KBUILD_MODNAME)\n"
  ">> > +void peci_driver_unregister(struct peci_driver *driver);\n"
  ">> > +\n"
  ">> > +/**\n"
@@ -400,7 +427,7 @@
  ">> > module_exit()\n"
  ">> > + */\n"
  ">> > +#define module_peci_driver(__peci_driver) \\\n"
- ">> > +???????module_driver(__peci_driver, peci_driver_register,\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240module_driver(__peci_driver, peci_driver_register,\n"
  ">> > peci_driver_unregister)\n"
  ">> > +\n"
  ">> > extern struct device_type peci_controller_type;\n"
@@ -424,39 +451,39 @@
  ">> > +\n"
  ">> > #include \"internal.h\"\n"
  ">> >\n"
- ">> > +#define PECI_GET_DIB_CMD???????????????0xf7\n"
- ">> > +#define? PECI_GET_DIB_WR_LEN???????????1\n"
- ">> > +#define? PECI_GET_DIB_RD_LEN???????????8\n"
+ ">> > +#define PECI_GET_DIB_CMD\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400xf7\n"
+ ">> > +#define\302\240 PECI_GET_DIB_WR_LEN\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2401\n"
+ ">> > +#define\302\240 PECI_GET_DIB_RD_LEN\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2408\n"
  ">> > +\n"
- ">> > +#define PECI_RDPKGCFG_CMD??????????????0xa1\n"
- ">> > +#define? PECI_RDPKGCFG_WRITE_LEN???????5\n"
- ">> > +#define? PECI_RDPKGCFG_READ_LEN_BASE???1\n"
- ">> > +#define PECI_WRPKGCFG_CMD??????????????0xa5\n"
- ">> > +#define? PECI_WRPKGCFG_WRITE_LEN_BASE??6\n"
- ">> > +#define? PECI_WRPKGCFG_READ_LEN????????????????1\n"
+ ">> > +#define PECI_RDPKGCFG_CMD\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400xa1\n"
+ ">> > +#define\302\240 PECI_RDPKGCFG_WRITE_LEN\302\240\302\240\302\240\302\240\302\240\302\240\302\2405\n"
+ ">> > +#define\302\240 PECI_RDPKGCFG_READ_LEN_BASE\302\240\302\240\302\2401\n"
+ ">> > +#define PECI_WRPKGCFG_CMD\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400xa5\n"
+ ">> > +#define\302\240 PECI_WRPKGCFG_WRITE_LEN_BASE\302\240\302\2406\n"
+ ">> > +#define\302\240 PECI_WRPKGCFG_READ_LEN\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2401\n"
  ">> > +\n"
  ">> > +/* Device Specific Completion Code (CC) Definition */\n"
- ">> > +#define PECI_CC_SUCCESS????????????????????????????????0x40\n"
- ">> > +#define PECI_CC_NEED_RETRY?????????????????????0x80\n"
- ">> > +#define PECI_CC_OUT_OF_RESOURCE????????????????????????0x81\n"
- ">> > +#define PECI_CC_UNAVAIL_RESOURCE???????????????0x82\n"
- ">> > +#define PECI_CC_INVALID_REQ????????????????????0x90\n"
- ">> > +#define PECI_CC_MCA_ERROR??????????????????????0x91\n"
- ">> > +#define PECI_CC_CATASTROPHIC_MCA_ERROR?????????0x93\n"
- ">> > +#define PECI_CC_FATAL_MCA_ERROR????????????????????????0x94\n"
- ">> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB????????????????0x98\n"
- ">> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB_IERR???0x9B\n"
- ">> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB_MCA????0x9C\n"
- ">> > +\n"
- ">> > +#define PECI_RETRY_BIT?????????????????BIT(0)\n"
- ">> > +\n"
- ">> > +#define PECI_RETRY_TIMEOUT?????????????msecs_to_jiffies(700)\n"
- ">> > +#define PECI_RETRY_INTERVAL_MIN????????????????msecs_to_jiffies(1)\n"
- ">> > +#define PECI_RETRY_INTERVAL_MAX????????????????msecs_to_jiffies(128)\n"
+ ">> > +#define PECI_CC_SUCCESS\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x40\n"
+ ">> > +#define PECI_CC_NEED_RETRY\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x80\n"
+ ">> > +#define PECI_CC_OUT_OF_RESOURCE\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x81\n"
+ ">> > +#define PECI_CC_UNAVAIL_RESOURCE\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x82\n"
+ ">> > +#define PECI_CC_INVALID_REQ\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x90\n"
+ ">> > +#define PECI_CC_MCA_ERROR\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x91\n"
+ ">> > +#define PECI_CC_CATASTROPHIC_MCA_ERROR\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x93\n"
+ ">> > +#define PECI_CC_FATAL_MCA_ERROR\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x94\n"
+ ">> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x98\n"
+ ">> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB_IERR\302\240\302\240\302\2400x9B\n"
+ ">> > +#define PECI_CC_PARITY_ERR_GPSB_OR_PMSB_MCA\302\240\302\240\302\240\302\2400x9C\n"
+ ">> > +\n"
+ ">> > +#define PECI_RETRY_BIT\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240BIT(0)\n"
+ ">> > +\n"
+ ">> > +#define PECI_RETRY_TIMEOUT\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240msecs_to_jiffies(700)\n"
+ ">> > +#define PECI_RETRY_INTERVAL_MIN\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240msecs_to_jiffies(1)\n"
+ ">> > +#define PECI_RETRY_INTERVAL_MAX\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240msecs_to_jiffies(128)\n"
  ">> > +\n"
  ">> > +static u8 peci_request_data_cc(struct peci_request *req)\n"
  ">> > +{\n"
- ">> > +???????return req->rx.buf[0];\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return req->rx.buf[0];\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > +/**\n"
@@ -471,175 +498,175 @@
  ">> > + */\n"
  ">> > +int peci_request_status(struct peci_request *req)\n"
  ">> > +{\n"
- ">> > +???????u8 cc = peci_request_data_cc(req);\n"
- ">> > +\n"
- ">> > +???????if (cc != PECI_CC_SUCCESS)\n"
- ">> > +???????????????dev_dbg(&req->device->dev, \"ret: %#02x\\n\", cc);\n"
- ">> > +\n"
- ">> > +???????switch (cc) {\n"
- ">> > +???????case PECI_CC_SUCCESS:\n"
- ">> > +???????????????return 0;\n"
- ">> > +???????case PECI_CC_NEED_RETRY:\n"
- ">> > +???????case PECI_CC_OUT_OF_RESOURCE:\n"
- ">> > +???????case PECI_CC_UNAVAIL_RESOURCE:\n"
- ">> > +???????????????return -EAGAIN;\n"
- ">> > +???????case PECI_CC_INVALID_REQ:\n"
- ">> > +???????????????return -EINVAL;\n"
- ">> > +???????case PECI_CC_MCA_ERROR:\n"
- ">> > +???????case PECI_CC_CATASTROPHIC_MCA_ERROR:\n"
- ">> > +???????case PECI_CC_FATAL_MCA_ERROR:\n"
- ">> > +???????case PECI_CC_PARITY_ERR_GPSB_OR_PMSB:\n"
- ">> > +???????case PECI_CC_PARITY_ERR_GPSB_OR_PMSB_IERR:\n"
- ">> > +???????case PECI_CC_PARITY_ERR_GPSB_OR_PMSB_MCA:\n"
- ">> > +???????????????return -EIO;\n"
- ">> > +???????}\n"
- ">> > +\n"
- ">> > +???????WARN_ONCE(1, \"Unknown PECI completion code: %#02x\\n\", cc);\n"
- ">> > +\n"
- ">> > +???????return -EIO;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240u8 cc = peci_request_data_cc(req);\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (cc != PECI_CC_SUCCESS)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240dev_dbg(&req->device->dev, \"ret: %#02x\\n\", cc);\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240switch (cc) {\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240case PECI_CC_SUCCESS:\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return 0;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240case PECI_CC_NEED_RETRY:\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240case PECI_CC_OUT_OF_RESOURCE:\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240case PECI_CC_UNAVAIL_RESOURCE:\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return -EAGAIN;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240case PECI_CC_INVALID_REQ:\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return -EINVAL;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240case PECI_CC_MCA_ERROR:\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240case PECI_CC_CATASTROPHIC_MCA_ERROR:\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240case PECI_CC_FATAL_MCA_ERROR:\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240case PECI_CC_PARITY_ERR_GPSB_OR_PMSB:\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240case PECI_CC_PARITY_ERR_GPSB_OR_PMSB_IERR:\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240case PECI_CC_PARITY_ERR_GPSB_OR_PMSB_MCA:\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return -EIO;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240WARN_ONCE(1, \"Unknown PECI completion code: %#02x\\n\", cc);\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return -EIO;\n"
  ">> > +}\n"
  ">> > +EXPORT_SYMBOL_NS_GPL(peci_request_status, PECI);\n"
  ">> > +\n"
  ">> > +static int peci_request_xfer(struct peci_request *req)\n"
  ">> > +{\n"
- ">> > +???????struct peci_device *device = req->device;\n"
- ">> > +???????struct peci_controller *controller = device->controller;\n"
- ">> > +???????int ret;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_device *device = req->device;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_controller *controller = device->controller;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240int ret;\n"
  ">> > +\n"
- ">> > +???????mutex_lock(&controller->bus_lock);\n"
- ">> > +???????ret = controller->xfer(controller, device->addr, req);\n"
- ">> > +???????mutex_unlock(&controller->bus_lock);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240mutex_lock(&controller->bus_lock);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = controller->xfer(controller, device->addr, req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240mutex_unlock(&controller->bus_lock);\n"
  ">> > +\n"
- ">> > +???????return ret;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return ret;\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > +static int peci_request_xfer_retry(struct peci_request *req)\n"
  ">> > +{\n"
- ">> > +???????long wait_interval = PECI_RETRY_INTERVAL_MIN;\n"
- ">> > +???????struct peci_device *device = req->device;\n"
- ">> > +???????struct peci_controller *controller = device->controller;\n"
- ">> > +???????unsigned long start = jiffies;\n"
- ">> > +???????int ret;\n"
- ">> > +\n"
- ">> > +???????/* Don't try to use it for ping */\n"
- ">> > +???????if (WARN_ON(!req->rx.buf))\n"
- ">> > +???????????????return 0;\n"
- ">> > +\n"
- ">> > +???????do {\n"
- ">> > +???????????????ret = peci_request_xfer(req);\n"
- ">> > +???????????????if (ret) {\n"
- ">> > +???????????????????????dev_dbg(&controller->dev, \"xfer error: %d\\n\", ret);\n"
- ">> > +???????????????????????return ret;\n"
- ">> > +???????????????}\n"
- ">> > +\n"
- ">> > +???????????????if (peci_request_status(req) != -EAGAIN)\n"
- ">> > +???????????????????????return 0;\n"
- ">> > +\n"
- ">> > +???????????????/* Set the retry bit to indicate a retry attempt */\n"
- ">> > +???????????????req->tx.buf[1] |= PECI_RETRY_BIT;\n"
- ">> > +\n"
- ">> > +???????????????if (schedule_timeout_interruptible(wait_interval))\n"
- ">> > +???????????????????????return -ERESTARTSYS;\n"
- ">> > +\n"
- ">> > +???????????????wait_interval *= 2;\n"
- ">> > +???????????????if (wait_interval > PECI_RETRY_INTERVAL_MAX)\n"
- ">> > +???????????????????????wait_interval = PECI_RETRY_INTERVAL_MAX;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240long wait_interval = PECI_RETRY_INTERVAL_MIN;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_device *device = req->device;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_controller *controller = device->controller;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240unsigned long start = jiffies;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240int ret;\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240/* Don't try to use it for ping */\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (WARN_ON(!req->rx.buf))\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return 0;\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240do {\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = peci_request_xfer(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (ret) {\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240dev_dbg(&controller->dev, \"xfer error: %d\\n\", ret);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return ret;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (peci_request_status(req) != -EAGAIN)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return 0;\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240/* Set the retry bit to indicate a retry attempt */\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240req->tx.buf[1] |= PECI_RETRY_BIT;\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (schedule_timeout_interruptible(wait_interval))\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return -ERESTARTSYS;\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240wait_interval *= 2;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (wait_interval > PECI_RETRY_INTERVAL_MAX)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240wait_interval = PECI_RETRY_INTERVAL_MAX;\n"
  ">>\n"
  ">> wait_interval = min(wait_interval * 2, PECI_RETRY_INTERVAL_MAX) ?\n"
  ">\n"
  ">Ack.\n"
  ">\n"
  ">>\n"
- ">> > +???????} while (time_before(jiffies, start + PECI_RETRY_TIMEOUT));\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240} while (time_before(jiffies, start + PECI_RETRY_TIMEOUT));\n"
  ">> > +\n"
- ">> > +???????dev_dbg(&controller->dev, \"request timed out\\n\");\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240dev_dbg(&controller->dev, \"request timed out\\n\");\n"
  ">> > +\n"
- ">> > +???????return -ETIMEDOUT;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return -ETIMEDOUT;\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > /**\n"
- ">> > ?* peci_request_alloc() - allocate &struct peci_request with buffers with\n"
+ ">> > \302\240* peci_request_alloc() - allocate &struct peci_request with buffers with\n"
  ">> > given lengths\n"
- ">> > ?* @device: PECI device to which request is going to be sent\n"
+ ">> > \302\240* @device: PECI device to which request is going to be sent\n"
  ">> > @@ -72,3 +201,91 @@ void peci_request_free(struct peci_request *req)\n"
- ">> > ????????kfree(req);\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240kfree(req);\n"
  ">> > }\n"
  ">> > EXPORT_SYMBOL_NS_GPL(peci_request_free, PECI);\n"
  ">> > +\n"
  ">> > +struct peci_request *peci_get_dib(struct peci_device *device)\n"
  ">> > +{\n"
- ">> > +???????struct peci_request *req;\n"
- ">> > +???????int ret;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_request *req;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240int ret;\n"
  ">> > +\n"
- ">> > +???????req = peci_request_alloc(device, PECI_GET_DIB_WR_LEN,\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240req = peci_request_alloc(device, PECI_GET_DIB_WR_LEN,\n"
  ">> > PECI_GET_DIB_RD_LEN);\n"
- ">> > +???????if (!req)\n"
- ">> > +???????????????return ERR_PTR(-ENOMEM);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (!req)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return ERR_PTR(-ENOMEM);\n"
  ">> > +\n"
- ">> > +???????req->tx.buf[0] = PECI_GET_DIB_CMD;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240req->tx.buf[0] = PECI_GET_DIB_CMD;\n"
  ">> > +\n"
- ">> > +???????ret = peci_request_xfer(req);\n"
- ">> > +???????if (ret) {\n"
- ">> > +???????????????peci_request_free(req);\n"
- ">> > +???????????????return ERR_PTR(ret);\n"
- ">> > +???????}\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = peci_request_xfer(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (ret) {\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240peci_request_free(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return ERR_PTR(ret);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\n"
  ">> > +\n"
- ">> > +???????return req;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return req;\n"
  ">> > +}\n"
  ">> > +EXPORT_SYMBOL_NS_GPL(peci_get_dib, PECI);\n"
  ">> > +\n"
  ">> > +static struct peci_request *\n"
  ">> > +__pkg_cfg_read(struct peci_device *device, u8 index, u16 param, u8 len)\n"
  ">> > +{\n"
- ">> > +???????struct peci_request *req;\n"
- ">> > +???????int ret;\n"
- ">> > +\n"
- ">> > +???????req = peci_request_alloc(device, PECI_RDPKGCFG_WRITE_LEN,\n"
- ">> > +??????????????????????????????? PECI_RDPKGCFG_READ_LEN_BASE + len);\n"
- ">> > +???????if (!req)\n"
- ">> > +???????????????return ERR_PTR(-ENOMEM);\n"
- ">> > +\n"
- ">> > +???????req->tx.buf[0] = PECI_RDPKGCFG_CMD;\n"
- ">> > +???????req->tx.buf[1] = 0;\n"
- ">> > +???????req->tx.buf[2] = index;\n"
- ">> > +???????put_unaligned_le16(param, &req->tx.buf[3]);\n"
- ">> > +\n"
- ">> > +???????ret = peci_request_xfer_retry(req);\n"
- ">> > +???????if (ret) {\n"
- ">> > +???????????????peci_request_free(req);\n"
- ">> > +???????????????return ERR_PTR(ret);\n"
- ">> > +???????}\n"
- ">> > +\n"
- ">> > +???????return req;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_request *req;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240int ret;\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240req = peci_request_alloc(device, PECI_RDPKGCFG_WRITE_LEN,\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 PECI_RDPKGCFG_READ_LEN_BASE + len);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (!req)\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return ERR_PTR(-ENOMEM);\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240req->tx.buf[0] = PECI_RDPKGCFG_CMD;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240req->tx.buf[1] = 0;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240req->tx.buf[2] = index;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240put_unaligned_le16(param, &req->tx.buf[3]);\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = peci_request_xfer_retry(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (ret) {\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240peci_request_free(req);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return ERR_PTR(ret);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\n"
+ ">> > +\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return req;\n"
  ">> > +}\n"
  ">> > +\n"
  ">> > +u8 peci_request_data_readb(struct peci_request *req)\n"
  ">> > +{\n"
- ">> > +???????return req->rx.buf[1];\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return req->rx.buf[1];\n"
  ">> > +}\n"
  ">> > +EXPORT_SYMBOL_NS_GPL(peci_request_data_readb, PECI);\n"
  ">> > +\n"
  ">> > +u16 peci_request_data_readw(struct peci_request *req)\n"
  ">> > +{\n"
- ">> > +???????return get_unaligned_le16(&req->rx.buf[1]);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return get_unaligned_le16(&req->rx.buf[1]);\n"
  ">> > +}\n"
  ">> > +EXPORT_SYMBOL_NS_GPL(peci_request_data_readw, PECI);\n"
  ">> > +\n"
  ">> > +u32 peci_request_data_readl(struct peci_request *req)\n"
  ">> > +{\n"
- ">> > +???????return get_unaligned_le32(&req->rx.buf[1]);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return get_unaligned_le32(&req->rx.buf[1]);\n"
  ">> > +}\n"
  ">> > +EXPORT_SYMBOL_NS_GPL(peci_request_data_readl, PECI);\n"
  ">> > +\n"
  ">> > +u64 peci_request_data_readq(struct peci_request *req)\n"
  ">> > +{\n"
- ">> > +???????return get_unaligned_le64(&req->rx.buf[1]);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return get_unaligned_le64(&req->rx.buf[1]);\n"
  ">> > +}\n"
  ">> > +EXPORT_SYMBOL_NS_GPL(peci_request_data_readq, PECI);\n"
  ">> > +\n"
  ">> > +u64 peci_request_data_dib(struct peci_request *req)\n"
  ">> > +{\n"
- ">> > +???????return get_unaligned_le64(&req->rx.buf[0]);\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return get_unaligned_le64(&req->rx.buf[0]);\n"
  ">> > +}\n"
  ">> > +EXPORT_SYMBOL_NS_GPL(peci_request_data_dib, PECI);\n"
  ">> > +\n"
@@ -647,10 +674,10 @@
  ">> > +struct peci_request *peci_pkg_cfg_##x(struct peci_device *device, u8 index,\n"
  ">> > u16 param) \\\n"
  ">> > +{ \\\n"
- ">> > +???????return __pkg_cfg_read(device, index, param, sizeof(type)); \\\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return __pkg_cfg_read(device, index, param, sizeof(type)); \\\n"
  ">> > +} \\\n"
  ">>\n"
- ">> Is there a reason for this particular API?? I'd think a more natural one\n"
+ ">> Is there a reason for this particular API?\302\240 I'd think a more natural one\n"
  ">> that would offload a bit of boilerplate from callers would look more like\n"
  ">>\n"
  ">> int peci_pkg_cfg_##x(struct peci_device *device, u8 index, u16 param, type\n"
@@ -682,42 +709,42 @@
  ">> > #include <linux/mutex.h>\n"
  ">> > #include <linux/types.h>\n"
  ">> >\n"
- ">> > +#define PECI_PCS_PKG_ID????????????????????????0? /* Package Identifier\n"
+ ">> > +#define PECI_PCS_PKG_ID\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400\302\240 /* Package Identifier\n"
  ">> > Read */\n"
- ">> > +#define? PECI_PKG_ID_CPU_ID????????????0x0000? /* CPUID Info */\n"
- ">> > +#define? PECI_PKG_ID_PLATFORM_ID???????0x0001? /* Platform ID */\n"
- ">> > +#define? PECI_PKG_ID_DEVICE_ID?????????0x0002? /* Uncore Device ID */\n"
- ">> > +#define? PECI_PKG_ID_MAX_THREAD_ID?????0x0003? /* Max Thread ID */\n"
- ">> > +#define? PECI_PKG_ID_MICROCODE_REV?????0x0004? /* CPU Microcode Update\n"
+ ">> > +#define\302\240 PECI_PKG_ID_CPU_ID\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x0000\302\240 /* CPUID Info */\n"
+ ">> > +#define\302\240 PECI_PKG_ID_PLATFORM_ID\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x0001\302\240 /* Platform ID */\n"
+ ">> > +#define\302\240 PECI_PKG_ID_DEVICE_ID\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\2400x0002\302\240 /* Uncore Device ID */\n"
+ ">> > +#define\302\240 PECI_PKG_ID_MAX_THREAD_ID\302\240\302\240\302\240\302\240\302\2400x0003\302\240 /* Max Thread ID */\n"
+ ">> > +#define\302\240 PECI_PKG_ID_MICROCODE_REV\302\240\302\240\302\240\302\240\302\2400x0004\302\240 /* CPU Microcode Update\n"
  ">> > Revision */\n"
- ">> > +#define? PECI_PKG_ID_MCA_ERROR_LOG?????0x0005? /* Machine Check Status */\n"
+ ">> > +#define\302\240 PECI_PKG_ID_MCA_ERROR_LOG\302\240\302\240\302\240\302\240\302\2400x0005\302\240 /* Machine Check Status */\n"
  ">> > +\n"
  ">> > struct peci_request;\n"
  ">> >\n"
  ">> > /**\n"
  ">> > @@ -41,6 +49,11 @@ static inline struct peci_controller\n"
  ">> > *to_peci_controller(void *d)\n"
- ">> > ?* struct peci_device - PECI device\n"
- ">> > ?* @dev: device object to register PECI device to the device model\n"
- ">> > ?* @controller: manages the bus segment hosting this PECI device\n"
+ ">> > \302\240* struct peci_device - PECI device\n"
+ ">> > \302\240* @dev: device object to register PECI device to the device model\n"
+ ">> > \302\240* @controller: manages the bus segment hosting this PECI device\n"
  ">> > + * @info: PECI device characteristics\n"
  ">> > + * @info.family: device family\n"
  ">> > + * @info.model: device model\n"
  ">> > + * @info.peci_revision: PECI revision supported by the PECI device\n"
  ">> > + * @info.socket_id: the socket ID represented by the PECI device\n"
- ">> > ?* @addr: address used on the PECI bus connected to the parent controller\n"
- ">> > ?*\n"
- ">> > ?* A peci_device identifies a single device (i.e. CPU) connected to a PECI\n"
+ ">> > \302\240* @addr: address used on the PECI bus connected to the parent controller\n"
+ ">> > \302\240*\n"
+ ">> > \302\240* A peci_device identifies a single device (i.e. CPU) connected to a PECI\n"
  ">> > bus.\n"
  ">> > @@ -50,6 +63,12 @@ static inline struct peci_controller\n"
  ">> > *to_peci_controller(void *d)\n"
  ">> > struct peci_device {\n"
- ">> > ????????struct device dev;\n"
- ">> > ????????struct peci_controller *controller;\n"
- ">> > +???????struct {\n"
- ">> > +???????????????u16 family;\n"
- ">> > +???????????????u8 model;\n"
- ">> > +???????????????u8 peci_revision;\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct device dev;\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct peci_controller *controller;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct {\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240u16 family;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240u8 model;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240u8 peci_revision;\n"
  ">>\n"
  ">> This field gets set but doesn't seem to end up used anywhere; is it\n"
  ">> useful?\n"
@@ -732,9 +759,9 @@
  ">-Iwona\n"
  ">\n"
  ">>\n"
- ">> > +???????????????u8 socket_id;\n"
- ">> > +???????} info;\n"
- ">> > ????????u8 addr;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240u8 socket_id;\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240} info;\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240u8 addr;\n"
  ">> > };\n"
  ">> >\n"
  ">> > diff --git a/lib/Kconfig b/lib/Kconfig\n"
@@ -744,12 +771,16 @@
  ">> > @@ -721,5 +721,5 @@ config ASN1_ENCODER\n"
  ">> >\n"
  ">> > config GENERIC_LIB_X86\n"
- ">> > ????????bool\n"
- ">> > -???????depends on X86\n"
- ">> > +???????depends on X86 || PECI\n"
- ">> > ????????default n\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240bool\n"
+ ">> > -\302\240\302\240\302\240\302\240\302\240\302\240\302\240depends on X86\n"
+ ">> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240depends on X86 || PECI\n"
+ ">> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240default n\n"
  ">> > --\n"
  ">> > 2.31.1\n"
- >
+ ">\n"
+ "_______________________________________________\n"
+ "linux-arm-kernel mailing list\n"
+ "linux-arm-kernel@lists.infradead.org\n"
+ http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
 
-59cebbc101d3bc33ab3be319d67420d863e647d7adc3ae35d9c3e03b17c38743
+5522423afc59794b91216ac92a8a9089bc7d5736b310e4c16615288c398bec70

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.