Lines Matching refs:css
28 #include "css.h"
327 return sprintf(buf, "css:t%01X\n", sch->st);
867 css_generate_pgid(struct channel_subsystem *css, u32 tod_high)
872 css->global_pgid.pgid_high.ext_cssid.version = 0x80;
873 css->global_pgid.pgid_high.ext_cssid.cssid =
874 css->id_valid ? css->cssid : 0;
876 css->global_pgid.pgid_high.cpu_addr = stap();
879 css->global_pgid.cpu_id = cpu_id.ident;
880 css->global_pgid.cpu_model = cpu_id.machine;
881 css->global_pgid.tod_high = tod_high;
886 struct channel_subsystem *css = to_css(dev);
888 mutex_destroy(&css->mutex);
889 kfree(css);
895 struct channel_subsystem *css = to_css(dev);
897 if (!css->id_valid)
900 return sprintf(buf, "%x\n", css->cssid);
907 struct channel_subsystem *css = to_css(dev);
910 mutex_lock(&css->mutex);
911 ret = sprintf(buf, "%x\n", css->cm_enabled);
912 mutex_unlock(&css->mutex);
919 struct channel_subsystem *css = to_css(dev);
926 mutex_lock(&css->mutex);
929 ret = css->cm_enabled ? chsc_secm(css, 0) : 0;
932 ret = css->cm_enabled ? 0 : chsc_secm(css, 1);
937 mutex_unlock(&css->mutex);
975 struct channel_subsystem *css;
978 css = kzalloc(sizeof(*css), GFP_KERNEL);
979 if (!css)
982 channel_subsystems[nr] = css;
983 dev_set_name(&css->device, "css%x", nr);
984 css->device.groups = cssdev_attr_groups;
985 css->device.release = channel_subsystem_release;
988 * css->device as the device argument with the DMA API)
991 css->device.coherent_dma_mask = DMA_BIT_MASK(64);
992 css->device.dma_mask = &css->device.coherent_dma_mask;
994 mutex_init(&css->mutex);
995 ret = chsc_get_cssid_iid(nr, &css->cssid, &css->iid);
997 css->id_valid = true;
998 pr_info("Partition identifier %01x.%01x\n", css->cssid,
999 css->iid);
1001 css_generate_pgid(css, (u32) (get_tod_clock() >> 32));
1003 ret = device_register(&css->device);
1005 put_device(&css->device);
1009 css->pseudo_subchannel = kzalloc(sizeof(*css->pseudo_subchannel),
1011 if (!css->pseudo_subchannel) {
1012 device_unregister(&css->device);
1017 css->pseudo_subchannel->dev.parent = &css->device;
1018 css->pseudo_subchannel->dev.release = css_subchannel_release;
1019 mutex_init(&css->pseudo_subchannel->reg_mutex);
1020 ret = css_sch_create_locks(css->pseudo_subchannel);
1022 kfree(css->pseudo_subchannel);
1023 device_unregister(&css->device);
1027 dev_set_name(&css->pseudo_subchannel->dev, "defunct");
1028 ret = device_register(&css->pseudo_subchannel->dev);
1030 put_device(&css->pseudo_subchannel->dev);
1031 device_unregister(&css->device);
1045 struct channel_subsystem *css;
1049 for_each_css(css) {
1050 mutex_lock(&css->mutex);
1051 if (css->cm_enabled)
1052 if (chsc_secm(css, 0))
1054 mutex_unlock(&css->mutex);
1065 * Since the css devices are neither on a bus nor have a class
1073 struct channel_subsystem *css;
1080 for_each_css(css) {
1081 mutex_lock(&css->mutex);
1082 if (!css->cm_enabled) {
1083 mutex_unlock(&css->mutex);
1086 ret = __chsc_do_secm(css, 0);
1088 mutex_unlock(&css->mutex);
1094 for_each_css(css) {
1095 mutex_lock(&css->mutex);
1096 if (!css->cm_enabled) {
1097 mutex_unlock(&css->mutex);
1100 ret = __chsc_do_secm(css, 1);
1102 mutex_unlock(&css->mutex);
1120 /* Currently cio supports only a single css */
1206 * Allocate dma memory from the css global pool. Intended for memory not
1207 * specific to any single device within the css. The allocated memory
1253 /* Setup css structure. */
1281 struct channel_subsystem *css = channel_subsystems[i];
1282 device_unregister(&css->pseudo_subchannel->dev);
1283 device_unregister(&css->device);
1297 struct channel_subsystem *css;
1299 for_each_css(css) {
1300 device_unregister(&css->pseudo_subchannel->dev);
1301 device_unregister(&css->device);
1472 ret = add_uevent_var(env, "MODALIAS=css:t%01X", sch->st);
1545 .name = "css",
1555 * css_driver_register - register a css driver
1556 * @cdrv: css driver to register
1569 * css_driver_unregister - unregister a css driver
1570 * @cdrv: css driver to unregister