Nice to hear from you again, too, Joel. I'm copying Craig Thomas on this mail. He's the manager of our test development department. He and I talked briefly about your offer and he'll take the lead in working with you. Thanks, -- Tom On Wed, 2004-12-08 at 09:52, Joel Schopp wrote: > > We're planning to test hotplug capability on PowerPC platforms we have > > in house. Following this text is a description of the systems. > > Basically we have two systems and an HMC. > > > > Also following is a brief conversation I had with Dave Hansen about > > possible testing we can do, but I'd like this discussion to move to a > > wider forum. What suggestions does this group have for our testing > > hotplug given the equipment we have? > > > > Tom, good to run into you again. > > I suggest regression testing cpu hotplug/dlpar on regular builds. I > would be happy to work with whoever is doing this on the osdl end to > explain how everything works and develop some tests. I've attached some > tests I had handy. Most of the other approx dozen I have are pretty > hardcoded to our test environment and need to be cleaned up to be useful > in other environments. Not that these are cleaned up either, but they > should work. The tests as written require 4 virtual cpus. They are > also designed to be run in pairs. They should run on other > architectures fine. > > As for memory hotplug on ppc64 even compile and boot testing would be a > good start until things restabalize. The current -mhp tree needs a hack > from Mike to even boot properly. We can then add on incremental tests > as they would be useful. > > ______________________________________________________________________ > #!/usr/bin/perl > > # ignore the next two lines :) > # to make this generic get values from /proc/device-tree/cpus/Power.../linux-logical-name > # %logical_to_physical = ("0" => 0 , "1" => 3, "2" => 4, "3" => 5); > > > > #bring the boot cpu back up > for($i = 0; $i <= 0; $i++){ > $file_path = "/sys/devices/system/cpu/cpu" . $i ."/online"; > # check that the file is there > if(! -e $file_path){ > die "The file " . $file_path . " doesn't exist!\n"; > } > > #check it has the correct value > open(CPU, "<" . $file_path); > while(<CPU>){ > if($_ != "0"){ > die "Was looking for a 0 in " . $file_path . " got a " . $_ . "\n"; > } > } > close(CPU) or die "couldn't close the file " . $file_path . "\n"; > > #put the new value in it > open(CPU, ">" . $file_path); > print CPU "1"; > close(CPU) or die "couldn't close the file " . $file_path . "\n"; > > } > > #check the value at least flipped > for($i = 0; $i <= 0; $i++){ > $file_path = "/sys/devices/system/cpu/cpu" . $i ."/online\n"; > open(CPU, ">" . $file_path); > while(<CPU>){ > if($_ != "1"){ > die "The cpu at " . $file_path . " should be 1 but instead is " . $_ . "\n"; > } > } > > close(CPU) or die "couldn't close the file\n" . $file_path; > } > > > print "Test Scenerio 3.4 for CPU DLPAR successful\n"; > > ______________________________________________________________________ > #!/usr/bin/perl > > # ignore the next two lines :) > # to make this generic get values from /proc/device-tree/cpus/Power.../linux-logical-name > # %logical_to_physical = ("0" => 0 , "1" => 3, "2" => 4, "3" => 5); > > > > #bring the cpus down, except the boot cpu > for($i = 1; $i <= 3; $i++){ > $file_path = "/sys/devices/system/cpu/cpu" . $i ."/online"; > # check that the file is there > if(! -e $file_path){ > die "The file " . $file_path . " doesn't exist!\n"; > } > > #check it has the correct value > open(CPU, "<" . $file_path); > while(<CPU>){ > if($_ != "1"){ > die "Was looking for a 1 in " . $file_path . " got a " . $_ . "\n"; > } > } > close(CPU) or die "couldn't close the file " . $file_path . "\n"; > > #put the new value in it > open(CPU, ">" . $file_path); > print CPU "0"; > close(CPU) or die "couldn't close the file " . $file_path . "\n"; > > } > > #check the value at least flipped > for($i = 1; $i <= 3; $i++){ > $file_path = "/sys/devices/system/cpu/cpu" . $i ."/online\n"; > open(CPU, ">" . $file_path); > while(<CPU>){ > if($_ != "0"){ > die "The cpu at " . $file_path . " should be 0 but instead is " . $_ . "\n"; > } > } > > close(CPU) or die "couldn't close the file\n" . $file_path; > } > > > print "Test Scenerio 3.1 for CPU DLPAR successful\n"; > > ______________________________________________________________________ > #!/usr/bin/perl > > # ignore the next two lines :) > # to make this generic get values from /proc/device-tree/cpus/Power.../linux-logical-name > # %logical_to_physical = ("0" => 0 , "1" => 3, "2" => 4, "3" => 5); > > > > #bring the cpus up, except the boot cpu which is already up > for($i = 1; $i <= 3; $i++){ > $file_path = "/sys/devices/system/cpu/cpu" . $i ."/online"; > # check that the file is there > if(! -e $file_path){ > die "The file " . $file_path . " doesn't exist!\n"; > } > > #check it has the correct value > open(CPU, "<" . $file_path); > while(<CPU>){ > if($_ != "0"){ > die "Was looking for a 0 in " . $file_path . " got a " . $_ . "\n"; > } > } > close(CPU) or die "couldn't close the file " . $file_path . "\n"; > > #put the new value in it > open(CPU, ">" . $file_path); > print CPU "1"; > close(CPU) or die "couldn't close the file " . $file_path . "\n"; > > } > > #check the value at least flipped > for($i = 1; $i <= 3; $i++){ > $file_path = "/sys/devices/system/cpu/cpu" . $i ."/online\n"; > open(CPU, ">" . $file_path); > while(<CPU>){ > if($_ != "1"){ > die "The cpu at " . $file_path . " should be 1 but instead is " . $_ . "\n"; > } > } > > close(CPU) or die "couldn't close the file\n" . $file_path; > } > > > print "Test Scenerio 3.2 for CPU DLPAR successful\n"; > > ______________________________________________________________________ > #!/usr/bin/perl > > # ignore the next two lines :) > # to make this generic get values from /proc/device-tree/cpus/Power.../linux-logical-name > # %logical_to_physical = ("0" => 0 , "1" => 3, "2" => 4, "3" => 5); > > > > #bring the boot cpu down > for($i = 0; $i <= 0; $i++){ > $file_path = "/sys/devices/system/cpu/cpu" . $i ."/online"; > # check that the file is there > if(! -e $file_path){ > die "The file " . $file_path . " doesn't exist!\n"; > } > > #check it has the correct value > open(CPU, "<" . $file_path); > while(<CPU>){ > if($_ != "1"){ > die "Was looking for a 1 in " . $file_path . " got a " . $_ . "\n"; > } > } > close(CPU) or die "couldn't close the file " . $file_path . "\n"; > > #put the new value in it > open(CPU, ">" . $file_path); > print CPU "0"; > close(CPU) or die "couldn't close the file " . $file_path . "\n"; > > } > > #check the value at least flipped > for($i = 0; $i <= 0; $i++){ > $file_path = "/sys/devices/system/cpu/cpu" . $i ."/online\n"; > open(CPU, ">" . $file_path); > while(<CPU>){ > if($_ != "0"){ > die "The cpu at " . $file_path . " should be 0 but instead is " . $_ . "\n"; > } > } > > close(CPU) or die "couldn't close the file\n" . $file_path; > } > > > print "Test Scenerio 3.3 for CPU DLPAR successful\n";