Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 107069
b: refs/heads/master
c: 81fe788
h: refs/heads/master
i:
  107067: 08735c1
v: v3
  • Loading branch information
Dean Nelson authored and Linus Torvalds committed Jul 30, 2008
1 parent 6ed151f commit 0b0a5fa
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 27 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 04de741885bc7565a28150e82c56a56e544440e6
refs/heads/master: 81fe7883d2c8a80a7145ad22f8cd8514d05412b9
6 changes: 3 additions & 3 deletions trunk/drivers/misc/sgi-xp/xpc.h
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@
* which are partition specific (vars part). These are setup by XPC.
* (Local partition's vars pointers are xpc_vars and xpc_vars_part.)
*
* Note: Until 'stamp' is set non-zero, the partition XPC code has not been
* Note: Until 'ts_jiffies' is set non-zero, the partition XPC code has not been
* initialized.
*/
struct xpc_rsvd_page {
Expand All @@ -101,7 +101,7 @@ struct xpc_rsvd_page {
u64 vars_pa; /* physical address of struct xpc_vars */
u64 activate_mq_gpa; /* global phys address of activate_mq */
} sn;
unsigned long stamp; /* time when reserved page was setup by XPC */
unsigned long ts_jiffies; /* timestamp when rsvd pg was setup by XPC */
u64 pad2[10]; /* align to last u64 in 2nd 64-byte cacheline */
u64 SAL_nasids_size; /* SAL: size of each nasid mask in bytes */
};
Expand Down Expand Up @@ -534,7 +534,7 @@ struct xpc_partition {
/* XPC HB infrastructure */

u8 remote_rp_version; /* version# of partition's rsvd pg */
unsigned long remote_rp_stamp; /* time when rsvd pg was initialized */
unsigned long remote_rp_ts_jiffies; /* timestamp when rsvd pg setup */
u64 remote_rp_pa; /* phys addr of partition's rsvd pg */
u64 last_heartbeat; /* HB at last read */
u32 activate_IRQ_rcvd; /* IRQs since activation */
Expand Down
8 changes: 4 additions & 4 deletions trunk/drivers/misc/sgi-xp/xpc_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -862,8 +862,8 @@ xpc_do_exit(enum xp_retval reason)
DBUG_ON(xpc_any_partition_engaged());
DBUG_ON(xpc_any_hbs_allowed() != 0);

/* indicate to others that our reserved page is uninitialized */
xpc_rsvd_page->stamp = 0;
/* a zero timestamp indicates our rsvd page is not initialized */
xpc_rsvd_page->ts_jiffies = 0;

if (reason == xpUnloading) {
(void)unregister_die_notifier(&xpc_die_notifier);
Expand Down Expand Up @@ -1152,8 +1152,8 @@ xpc_init(void)

/* initialization was not successful */
out_3:
/* indicate to others that our reserved page is uninitialized */
xpc_rsvd_page->stamp = 0;
/* a zero timestamp indicates our rsvd page is not initialized */
xpc_rsvd_page->ts_jiffies = 0;

(void)unregister_die_notifier(&xpc_die_notifier);
(void)unregister_reboot_notifier(&xpc_reboot_notifier);
Expand Down
14 changes: 7 additions & 7 deletions trunk/drivers/misc/sgi-xp/xpc_partition.c
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ xpc_setup_rsvd_page(void)
{
struct xpc_rsvd_page *rp;
u64 rp_pa;
unsigned long new_stamp;
unsigned long new_ts_jiffies;

/* get the local reserved page's address */

Expand Down Expand Up @@ -183,10 +183,10 @@ xpc_setup_rsvd_page(void)
* This signifies to the remote partition that our reserved
* page is initialized.
*/
new_stamp = jiffies;
if (new_stamp == 0 || new_stamp == rp->stamp)
new_stamp++;
rp->stamp = new_stamp;
new_ts_jiffies = jiffies;
if (new_ts_jiffies == 0 || new_ts_jiffies == rp->ts_jiffies)
new_ts_jiffies++;
rp->ts_jiffies = new_ts_jiffies;

return rp;
}
Expand Down Expand Up @@ -225,8 +225,8 @@ xpc_get_remote_rp(int nasid, unsigned long *discovered_nasids,
discovered_nasids[l] |= remote_part_nasids[l];
}

/* see if the reserved page has been set up by XPC */
if (remote_rp->stamp == 0)
/* zero timestamp indicates the reserved page has not been setup */
if (remote_rp->ts_jiffies == 0)
return xpRsvdPageNotSet;

if (XPC_VERSION_MAJOR(remote_rp->version) !=
Expand Down
26 changes: 14 additions & 12 deletions trunk/drivers/misc/sgi-xp/xpc_sn2.c
Original file line number Diff line number Diff line change
Expand Up @@ -863,8 +863,8 @@ xpc_partition_deactivation_requested_sn2(short partid)
*/
static void
xpc_update_partition_info_sn2(struct xpc_partition *part, u8 remote_rp_version,
unsigned long *remote_rp_stamp, u64 remote_rp_pa,
u64 remote_vars_pa,
unsigned long *remote_rp_ts_jiffies,
u64 remote_rp_pa, u64 remote_vars_pa,
struct xpc_vars_sn2 *remote_vars)
{
struct xpc_partition_sn2 *part_sn2 = &part->sn.sn2;
Expand All @@ -873,9 +873,9 @@ xpc_update_partition_info_sn2(struct xpc_partition *part, u8 remote_rp_version,
dev_dbg(xpc_part, " remote_rp_version = 0x%016x\n",
part->remote_rp_version);

part->remote_rp_stamp = *remote_rp_stamp;
dev_dbg(xpc_part, " remote_rp_stamp = 0x%016lx\n",
part->remote_rp_stamp);
part->remote_rp_ts_jiffies = *remote_rp_ts_jiffies;
dev_dbg(xpc_part, " remote_rp_ts_jiffies = 0x%016lx\n",
part->remote_rp_ts_jiffies);

part->remote_rp_pa = remote_rp_pa;
dev_dbg(xpc_part, " remote_rp_pa = 0x%016lx\n", part->remote_rp_pa);
Expand Down Expand Up @@ -933,7 +933,7 @@ xpc_identify_activate_IRQ_req_sn2(int nasid)
u64 remote_vars_pa;
int remote_rp_version;
int reactivate = 0;
unsigned long remote_rp_stamp = 0;
unsigned long remote_rp_ts_jiffies = 0;
short partid;
struct xpc_partition *part;
struct xpc_partition_sn2 *part_sn2;
Expand All @@ -952,7 +952,7 @@ xpc_identify_activate_IRQ_req_sn2(int nasid)

remote_vars_pa = remote_rp->sn.vars_pa;
remote_rp_version = remote_rp->version;
remote_rp_stamp = remote_rp->stamp;
remote_rp_ts_jiffies = remote_rp->ts_jiffies;

partid = remote_rp->SAL_partid;
part = &xpc_partitions[partid];
Expand Down Expand Up @@ -981,8 +981,9 @@ xpc_identify_activate_IRQ_req_sn2(int nasid)
part->act_state == XPC_P_INACTIVE) {

xpc_update_partition_info_sn2(part, remote_rp_version,
&remote_rp_stamp, remote_rp_pa,
remote_vars_pa, remote_vars);
&remote_rp_ts_jiffies,
remote_rp_pa, remote_vars_pa,
remote_vars);

if (xpc_partition_deactivation_requested_sn2(partid)) {
/*
Expand All @@ -999,16 +1000,17 @@ xpc_identify_activate_IRQ_req_sn2(int nasid)
DBUG_ON(part->remote_rp_version == 0);
DBUG_ON(part_sn2->remote_vars_version == 0);

if (remote_rp_stamp != part->remote_rp_stamp) {
if (remote_rp_ts_jiffies != part->remote_rp_ts_jiffies) {

/* the other side rebooted */

DBUG_ON(xpc_partition_engaged_sn2(partid));
DBUG_ON(xpc_partition_deactivation_requested_sn2(partid));

xpc_update_partition_info_sn2(part, remote_rp_version,
&remote_rp_stamp, remote_rp_pa,
remote_vars_pa, remote_vars);
&remote_rp_ts_jiffies,
remote_rp_pa, remote_vars_pa,
remote_vars);
reactivate = 1;
}

Expand Down

0 comments on commit 0b0a5fa

Please sign in to comment.