1 Release Date : Thu Nov 16 15:32:35 EST 2006 !! 1 ### Version 2.00.3 2 Sumant Patro <s !! 2 Wed Jan 29 09:13:44 EST 200 - Atul Mukker <atulm@lsil.com> 3 Current Version : 2.20.5.1 (scsi module), 2.20 !! 3 i. Change the handshake in ISR while acknowledging interrupts. Write the 4 Older Version : 2.20.4.9 (scsi module), 2.20 !! 4 valid interrupt pattern 0x10001234 as soon as it is read from the 5 !! 5 outdoor register. In existing driver and on certain platform, invalid 6 1. Changes in Initialization to fix kdump !! 6 command ids were being returned. 7 Send SYNC command on loading. !! 7 8 This command clears the pending comman !! 8 Also, do not wait on status be become 0xFF, since FW can return this 9 and re-initialize its internal RAID st !! 9 status in certain circumstances. 10 Without this change, megaraid driver e !! 10 11 initialize the adapter during kdump's !! 11 Initialize the numstatus field of mailbox to 0xFF so that we can wait 12 if there are pending commands or inter !! 12 on this wait in next interrupt. Firmware does not change its value 13 sharing the same IRQ. !! 13 unless there are some status to be posted 14 2. Authors email-id domain name changed f !! 14 15 Also modified the MODULE_AUTHOR to meg !! 15 ii. Specify the logical drive number while issuing the RESERVATION_STATUS 16 !! 16 17 Release Date : Fri May 19 09:31:45 EST 2006< !! 17 iii. Reduce the default mailbox busy wait time from 300us to 10us. This is 18 Current Version : 2.20.4.9 (scsi module), 2.20 !! 18 done to avaoid a possible deadlock in FW because of longer bust waits. 19 Older Version : 2.20.4.8 (scsi module), 2.20 !! 19 20 !! 20 iv. The max outstanding commands are reduced to 126 because that't the 21 1. Fixed a bug in megaraid_init_mbox(). !! 21 safest value on all FW. 22 Customer reported "garbage in file on !! 22 23 Root Cause: the driver registered cont !! 23 v. Number of sectors per IO are reduced to 128 (64kb), becuase FW needs 24 for those which are not support it. !! 24 resources in special circumstances like check consistency, rebuilds 25 Fix: Made change in the function inser !! 25 etc. 26 identifying 64-bit DMA capable control !! 26 27 !! 27 vi. max_commands is no longer a module parameter because of iv. 28 > -----Original Message----- !! 28 29 > From: Vasily Averin [mailto:vvs@sw.r !! 29 ### Version: 2.00.2 30 > Sent: Thursday, May 04, 2006 2:49 PM !! 30 i. Intermediate release with kernel specific code 31 > To: linux-scsi@vger.kernel.org; Koll !! 31 32 > Ju, Seokmann; Bagalkote, Sreenivas; !! 32 33 > James.Bottomley@SteelEye.com; devel@ !! 33 ### Version: 2.00.1i 34 > Subject: megaraid_mbox: garbage in f !! 34 Wed Dec 4 14:34:51 EST 2002 - Atul Mukker <atulm@lsil.com> 35 > !! 35 i. Making the older IO based controllers to work with this driver 36 > Hello all, !! 36 37 > !! 37 38 > I've investigated customers claim on !! 38 ### Version 2.00.1 39 > their node and found a !! 39 Fri Nov 15 10:59:44 EST 2002 - Atul Mukker <atulm@lsil.com> 40 > strange effect: reading from some fi !! 40 i. Release host lock before issuing internal command to reset 41 > "attempt to access beyond end of de !! 41 reservations in megaraid_reset() and reacquire after internal command 42 > !! 42 is completed. 43 > I've checked filesystem, memory on t << 44 > version, but it << 45 > does not help and issue still has be << 46 > file reading. << 47 > << 48 > Reproducer is simple: << 49 > << 50 > echo 0xffffffff >/proc/sys/dev/scsi/ << 51 > cat /vz/private/101/root/etc/ld.so.c << 52 > echo 0 >/proc/sys/dev/scsi/logging << 53 > << 54 > It leads to the following messages i << 55 > << 56 > sd_init_command: disk=sda, block=871 << 57 > sda : block=871769260 << 58 > sda : reading 26/26 512 byte blocks. << 59 > scsi_add_timer: scmd: f79ed980, time << 60 > sd 0:1:0:0: send 0xf79ed980 << 61 > command: Read (10): 28 00 33 << 62 > buffer = 0xf7cfb540, bufflen = 13312 << 63 > queuecommand 0xc0344010 << 64 > leaving scsi_dispatch_cmnd() << 65 > scsi_delete_timer: scmd: f79ed980, r << 66 > sd 0:1:0:0: done 0xf79ed980 SUCCESS << 67 > command: Read (10): 28 00 33 << 68 > scsi host busy 1 failed 0 << 69 > sd 0:1:0:0: Notifying upper driver o << 70 > sd_rw_intr: sda: res=0x0 << 71 > 26 sectors total, 13312 bytes done. << 72 > use_sg is 4 << 73 > attempt to access beyond end of devi << 74 > sda6: rw=0, want=1044134458, limit=9 << 75 > Buffer I/O error on device sda6, log << 76 > attempt to access beyond end of devi << 77 << 78 2. When INQUIRY with EVPD bit set issued << 79 system memory gets corrupted. << 80 Root Cause: MegaRAID F/W handle the IN << 81 incorrectly. << 82 Fix: MegaRAID F/W has fixed the proble << 83 soon. Meanwhile, driver will filter ou << 84 << 85 3. One member in the data structure of th << 86 issue on 64-bit platform. << 87 Customer reported "kernel unaligned ac << 88 application communicates with MegaRAID << 89 Root Cause: in uioc_t structure, one o << 90 led system to display the error messag << 91 Fix: A patch submitted to community fr << 92 << 93 > -----Original Message----- << 94 > From: linux-scsi-owner@vger.kernel.o << 95 > [mailto:linux-scsi-owner@vger.kernel << 96 > Sent: Wednesday, July 12, 2006 4:20 << 97 > To: linux-scsi@vger.kernel.org; linu << 98 > Subject: Re: Help: strange messages << 99 > << 100 > Hi, << 101 > << 102 > I saw same message. << 103 > << 104 > When GAM(Global Array Manager) is st << 105 > message output. << 106 > kernel: kernel unaligned access to 0 << 107 > ip=0xa000000200053371 << 108 > << 109 > The uioc structure used by ioctl is << 110 > the allignment of each member are di << 111 > In a 64 bit structure, the allignmen << 112 > boundary. this causes this messages. << 113 > In a 32 bit structure, we don't see << 114 > of member fit 32 bit boundary even i << 115 > << 116 > patch << 117 > I Add 32 bit dummy member to fit 64 << 118 > We confirmed this patch fix the prob << 119 > << 120 > ************************************ << 121 > **************** << 122 > --- linux-2.6.9/drivers/scsi/megarai << 123 > 2006-04-03 17:13:03.000000000 +0900 << 124 > +++ linux-2.6.9/drivers/scsi/megarai << 125 > 2006-04-03 17:14:09.000000000 +0900 << 126 > @@ -132,6 +132,10 @@ << 127 > /* Driver Data: */ << 128 > void __user * use << 129 > uint32_t use << 130 > + << 131 > + /* 64bit alignment */ << 132 > + uint32_t pad !! 133 > + !! 134 > mraid_passthru_t __u !! 135 > !! 136 > mraid_passthru_t *pt !! 137 > ************************************ !! >> >> >> >> 138 > **************** << 139 << 140 Release Date : Mon Apr 11 12:27:22 EST 2006< << 141 Current Version : 2.20.4.8 (scsi module), 2.20 << 142 Older Version : 2.20.4.7 (scsi module), 2.20 << 143 << 144 1. Fixed a bug in megaraid_reset_handler( << 145 Customer reported "Unable to handle ke << 146 at virtual address 00000000" when syst << 147 for some reason. It happened randomly. << 148 Root Cause: in the megaraid_reset_hand << 149 returning pending packets in the pend_ << 150 pending packets. << 151 Fix: Made the change in the driver so << 152 in the pend_list. << 153 << 154 2. Added change request. << 155 As found in the following URL, rmb() o << 156 problem. I had to increase the loop co << 157 http://marc.theaimsgroup.com/?l=linux- << 158 << 159 I attached a patch for your reference, << 160 Could you check and get this fix in yo << 161 << 162 Best Regards, << 163 Jun'ichi Nomura << 164 << 165 Release Date : Fri Nov 11 12:27:22 EST 2005< << 166 Current Version : 2.20.4.7 (scsi module), 2.20 << 167 Older Version : 2.20.4.6 (scsi module), 2.20 << 168 << 169 1. Sorted out PCI IDs to remove megaraid << 170 Based on the patch from Daniel, sorted << 171 character node name change from 'megad << 172 conflict. << 173 --- << 174 Hopefully we'll be getting the build r << 175 but we should also be thinking about t << 176 support overlap in the megaraid driver << 177 << 178 This patch pencils in a date of Feb 06 << 179 printk abuse in hope that existing leg << 180 going on. << 181 << 182 Signed-off-by: Daniel Drake <dsd@gentoo << 183 --- << 184 << 185 2. Fixed a issue: megaraid always fails t << 186 --- << 187 I found that the megaraid driver alway << 188 adapter with the following message: << 189 megaraid: resetting the host.. << 190 megaraid mbox: reset sequence << 191 megaraid: fast sync command ti << 192 megaraid: reservation reset fa << 193 when the "Cluster mode" of the adapter << 194 So, whenever the reset occurs, the ada << 195 offline and just become unavailable. << 196 << 197 Jun'ichi Nomura [mailto:jnomura@mtc.bi << 198 --- << 199 << 200 Release Date : Mon Mar 07 12:27:22 EST 2005< << 201 Current Version : 2.20.4.6 (scsi module), 2.20 << 202 Older Version : 2.20.4.5 (scsi module), 2.20 << 203 << 204 1. Added IOCTL backward compatibility. << 205 Convert megaraid_mm driver to new comp << 206 I don't have easy access to hardware, << 207 - Signed-off-by:Andi Kleen <ak@ << 208 << 209 2. megaraid_mbox fix: wrong order of argu << 210 That, BTW, shows why cross-builds are << 211 problem had been a new warning showing << 212 build (number of exceeding 256 got tru << 213 - Signed-off-by: Al Viro << 214 <viro@parcelfarce.linux.theplan << 215 << 216 3. Convert pci_module_init to pci_registe << 217 Convert from pci_module_init to pci_re << 218 (from:http://kernelnewbies.org/KernelJ << 219 - Signed-off-by: Domen Puncer < << 220 << 221 4. Use the pre defined DMA mask constants << 222 Use the DMA_{64,32}BIT_MASK constants << 223 pci_set_dma_mask() or pci_set_consiste << 224 http://marc.theaimsgroup.com/?t=108001 << 225 details. << 226 Signed-off-by: Tobias Klauser < << 227 Signed-off-by: Domen Puncer <do << 228 << 229 5. Remove SSID checking for Dobson, Linds << 230 Checking the SSVID/SSID for controller << 231 and Verde is unnecessary because devic << 232 and it is unique value. So, all contro << 233 supported by the driver regardless SSV << 234 << 235 6. Date Thu, 27 Jan 2005 04:31:09 +0100 << 236 From Herbert Poetzl <> << 237 Subject RFC: assert_spin_locked() for << 238 << 239 Greetings! << 240 << 241 overcautious programming will kill you << 242 ever thought about checking a spin_loc << 243 asserting that it must be held (maybe << 244 spinlock debugging?) ... << 245 << 246 there are several checks present in th << 247 where somebody does a variation on the << 248 << 249 BUG_ON(!spin_is_locked(&some_lock)); << 250 << 251 so what's wrong about that? nothing, u << 252 compile the code with CONFIG_DEBUG_SPI << 253 without CONFIG_SMP ... in which case t << 254 will kill your kernel ... << 255 << 256 maybe it's not advised to make such as << 257 but here is a solution which works for << 258 (compile tested for sh, x86_64 and x86 << 259 tested for x86 only) << 260 << 261 best, << 262 Herbert << 263 << 264 - Herbert Poetzl <herbert@13thf << 265 << 266 Release Date : Thu Feb 03 12:27:22 EST 2005< << 267 Current Version : 2.20.4.5 (scsi module), 2.20 << 268 Older Version : 2.20.4.4 (scsi module), 2.20 << 269 << 270 1. Modified name of two attributes in scs << 271 On Wed, 2005-02-02 at 10:56 -0500, Ju, << 272 > + .sdev_attrs << 273 > + .shost_attrs << 274 << 275 These are, perhaps, slightly confusing << 276 The terms device and class_device have << 277 generic device model, neither of which << 278 Why not simply megaraid_sdev_attrs and << 279 << 280 Other than this, it looks fine to me t << 281 << 282 Release Date : Thu Jan 27 00:01:03 EST 2005< << 283 Current Version : 2.20.4.4 (scsi module), 2.20 << 284 Older Version : 2.20.4.3 (scsi module), 2.20 << 285 << 286 1. Bump up the version of scsi module due << 287 << 288 Release Date : Thu Jan 21 00:01:03 EST 2005< << 289 Current Version : 2.20.4.3 (scsi module), 2.20 << 290 Older Version : 2.20.4.2 (scsi module), 2.20 << 291 << 292 1. Remove driver ioctl for logical drive << 293 replace with the sysfs attribute. To r << 294 capacity, application shall now use th << 295 logical drive number for a scsi device << 296 logical drives, class device attribute << 297 identify each controller. << 298 - Atul Mukker <atulm@lsil.com> << 299 << 300 "James, I've been thinking about this << 301 to something here. Let each driver add << 302 << 303 - Matt Domsch <Matt_Domsch@dell << 304 linux-scsi mailing list << 305 << 306 << 307 "Then, if you simply publish your LD n << 308 the device, you can look through /sys << 309 << 310 - James Bottomley <James.Bottom << 311 linux-scsi mailing list << 312 << 313 << 314 "I don't see why not ... it's your dri << 315 extra information you need as scsi_dev << 316 the designs of the extensible attribut << 317 << 318 - James Bottomley <James.Bottom << 319 linux-scsi mailing list << 320 << 321 2. Add AMI megaraid support - Brian King < << 322 PCI_VENDOR_ID_AMI, PCI_DEVICE_ << 323 PCI_VENDOR_ID_AMI, PCI_SUBSYS_ << 324 << 325 3. Make some code static - Adrian Bunk <bu << 326 Date: Mon, 15 Nov 2004 03:14:57 +010 << 327 << 328 The patch below makes some needlessly << 329 -wait_queue_head_t wait_q; << 330 +static wait_queue_head_t wait_q; << 331 << 332 Signed-off-by: Adrian Bunk <bunk@stusta << 333 << 334 4. Added NEC ROMB support - NEC MegaRAID << 335 PCI_VENDOR_ID_LSI_LOGIC, PCI_D << 336 PCI_SUBSYS_ID_NEC, PCI_SUBSYS_ << 337 << 338 5. Fixed Tape drive issue : For any Direc << 339 including tape, timeout value set by d << 340 value, most of command will return wit << 341 command like ERASE or FORMAT, it takes << 342 capacity of the device and the command << 343 completes. << 344 To address this issue, the 'timeout' f << 345 have NO TIMEOUT (i.e., 4) value as its << 346 << 347 << 348 << 349 Release Date : Thu Dec 9 19:10:23 EST 2004 << 350 - Sreenivas Bagalkote <sreenib@lsil.com << 351 << 352 Current Version : 2.20.4.2 (scsi module), 2.20 << 353 Older Version : 2.20.4.1 (scsi module), 2.20 << 354 << 355 i. Introduced driver ioctl that returns s << 356 << 357 "Why can't the existing sysfs interfac << 358 - Brian King (brking@us.ibm.co << 359 << 360 "I've looked into solving this another << 361 to get this driver-private mapping of << 362 without putting code something like th << 363 << 364 "...and by providing a mapping a funct << 365 is free to change its mapping algorith << 366 - Matt Domsch (Matt_Domsch@del << 367 << 368 Release Date : Thu Dec 9 19:02:14 EST 2004< << 369 << 370 Current Version : 2.20.4.1 (scsi module), 2.20 << 371 Older Version : 2.20.4.1 (scsi module), 2.20 << 372 << 373 i. Fix a bug in kioc's dma buffer dealloc << 374 << 375 Release Date : Thu Nov 4 18:24:56 EST 2004< << 376 << 377 Current Version : 2.20.4.1 (scsi module), 2.20 << 378 Older Version : 2.20.4.0 (scsi module), 2.20 << 379 << 380 i. Handle IOCTL cmd timeouts more properl << 381 << 382 ii. pci_dma_sync_{sg,single}_for_cpu was i << 383 incorrectly (instead of _for_device). << 384 pci_dma_sync_{sg,single}_for_device. << 385 << 386 Release Date : Wed Oct 06 11:15:29 EDT 2004< << 387 Current Version : 2.20.4.0 (scsi module), 2.20 << 388 Older Version : 2.20.4.0 (scsi module), 2.20 << 389 << 390 i. Remove CONFIG_COMPAT around register_i << 391 << 392 Release Date : Mon Sep 27 22:15:07 EDT 2004< << 393 Current Version : 2.20.4.0 (scsi module), 2.20 << 394 Older Version : 2.20.3.1 (scsi module), 2.20 << 395 << 396 i. Fix data corruption. Because of a typo << 397 were wrongly shared by the ioctl path. << 398 to be replaced by an incoming ioctl co << 399 << 400 Release Date : Tue Aug 24 09:43:35 EDT 2004< << 401 Current Version : 2.20.3.1 (scsi module), 2.20 << 402 Older Version : 2.20.3.0 (scsi module), 2.20 << 403 << 404 i. Function reordering so that inline fun << 405 are actually used. It is now mandatory << 406 << 407 Declare some heavy-weight functions to << 408 megaraid_mbox_build_cmd, megaraid_mbox << 409 megaraid_mbox_prepare_pthru, megaraid_ << 410 megaraid_busywait_mbox << 411 << 412 - Andrew Morton, 08.19.2004 << 413 linux-scsi mailing list << 414 << 415 "Something else to clean up after incl << 416 inline function is actually rendered a << 417 the function is always used before it << 418 re-arrange the code to eliminate the n << 419 function prototypes at the top of each << 420 declare with a prototype) each inline << 421 << 422 - Matt Domsch <Matt_Domsch@dell << 423 linux-scsi mailing list << 424 << 425 << 426 ii. Display elapsed time (countdown) while << 427 << 428 iii. Module compilation reorder in Makefile << 429 not occur when driver is compiled non- << 430 << 431 Patrick J. LoPresti <patl@users << 432 linux-scsi mailing list << 433 << 434 << 435 Release Date : Thu Aug 19 09:58:33 EDT 2004< << 436 Current Version : 2.20.3.0 (scsi module), 2.20 << 437 Older Version : 2.20.2.0 (scsi module), 2.20 << 438 << 439 i. When copying the mailbox packets, copy << 440 mailboxes) and only first 22 bytes (fo << 441 avoid getting the stale values for bus << 442 bit just before issuing command to the << 443 << 444 ii. In the reset handling, if the reset co << 445 driver, do not (wrongly) print informa << 446 packet. << 447 << 448 iii. Have extended wait when issuing comman << 449 required for the cases where the optio << 450 no BIOS to start the controller. The F << 451 the first command from the driver. The << 452 timeout for the synchronous commands, << 453 actually required. We now wait up to M << 454 FW boot process. << 455 << 456 iv. In megaraid_mbox_product_info, clear t << 457 before preparing the command for inqui << 458 FW does not get junk values in the com << 459 << 460 v. Do away with the redundant LSI_CONFIG_ << 461 CONFIG_COMPAT. Replace <asm/ioctl32.h> << 462 << 463 - James Bottomley <James.Bottom << 464 linux-scsi mailing list << 465 << 466 vi. Add support for 64-bit applications. C << 467 32-bit applications, even on 64-bit pl << 468 "buffer" fields of the mimd_t structur << 469 addresses in application mailbox and p << 470 << 471 vii. Move the function declarations for the << 472 megaraid_mm.h to megaraid_mm.c << 473 << 474 - Andrew Morton, 08.19.2004 << 475 linux-scsi mailing list << 476 << 477 viii. Change default values for MEGARAID_NEW << 478 MEGARAID_MAILBOX to 'n' in Kconfig.meg << 479 << 480 - Andrew Morton, 08.19.2004 << 481 linux-scsi mailing list << 482 << 483 ix. replace udelay with msleep << 484 << 485 x. Typos corrected in comments and whites << 486 grouping of expressions. << 487 << 488 << 489 Release Date : Fri Jul 23 15:22:07 EDT 2004< << 490 Current Version : 2.20.2.0 (scsi module), 2.20 << 491 Older Version : 2.20.1.0 (scsi module), 2.20 << 492 << 493 i. Add PCI ids for Acer ROMB 2E solution << 494 << 495 ii. Add PCI ids for I4 << 496 << 497 iii. Typo corrected for subsys id for megar << 498 << 499 iv. Remove yield() while mailbox handshake << 500 << 501 << 502 "My other main gripe is things like th << 503 << 504 + // wait for maximum 1 second f << 505 + for (i = 0; i < 40000; i++) { << 506 + if (mbox->numstatus != << 507 + udelay(25); yield(); << 508 + } << 509 << 510 which litter the driver. Use of yield << 511 << 512 - James Bottomley <James.Bottom << 513 linux-scsi mailing list << 514 << 515 v. Remove redundant __megaraid_busywait_m << 516 << 517 vi. Fix bug in the management module, whic << 518 IO module is loaded and then unloaded, << 519 management utility. The current versio << 520 handle the adapter unregister properly << 521 << 522 Specifically, it still keeps a referen << 523 controllers. To avoid this, the static << 524 replaced by a dynamic list, which gets << 525 is added or removed. << 526 << 527 Also, during unregistration of the IO << 528 now released in the exact reverse orde << 529 sequence. << 530 << 531 << 532 Release Date : Fri Jun 25 18:58:43 EDT 2004< << 533 Current Version : 2.20.1.0 << 534 Older Version : megaraid 2.20.0.1 << 535 << 536 i. Stale list pointer in adapter causes k << 537 megaraid_mbox is unloaded << 538 << 539 << 540 Release Date : Thu Jun 24 20:37:11 EDT 2004< << 541 Current Version : 2.20.0.1 << 542 Older Version : megaraid 2.20.0.00 << 543 << 544 i. Modules are not 'y' by default, but de << 545 SCSI & PCI. << 546 << 547 ii. Redundant structure mraid_driver_t rem << 548 << 549 iii. Miscellaneous indentation and goto/lab << 550 - Christoph Hellwig <hch@infrad << 551 << 552 iv. scsi_host_put(), do just before comple << 553 << 554 << 555 << 556 Release Date : Mon Jun 21 19:53:54 EDT 2004< << 557 Current Version : 2.20.0.0 << 558 Older Version : megaraid 2.20.0.rc2 and 2.00 << 559 << 560 i. Independent module to interact with us << 561 multiplex command to low level RAID mo << 562 << 563 "Shared code in a third module, a "lib << 564 solution. modprobe automatically loads << 565 running "modprobe driver1" or "modprob << 566 load the shared library module." << 567 << 568 - Jeff Garzik <jgarzik@pobox.co << 569 << 570 "As Jeff hinted, if your userspace<->d << 571 your new MPT-based RAID controllers an << 572 then perhaps you need a single small h << 573 better name), loaded by both mptraid a << 574 handles registering the /dev/megaraid << 575 both mptraid and megaraid would regist << 576 adapter discovered, and lsiioctl would << 577 redirecting userspace tool ioctls to t << 578 << 579 - Matt Domsch <Matt_Domsch@dell << 580 << 581 ii. Remove C99 initializations from pci_de << 582 << 583 "pci_id_table_g would be much more rea << 584 initializers. << 585 PCI table doesn't change, there's lots << 586 readable variant. And it's really far << 587 lines without C99 initializers." << 588 << 589 - Christoph Hellwig <hch@infrad << 590 << 591 iii. Many fixes as suggested by Christoph H< << 592 linux-scsi, 05.28.2004 << 593 << 594 iv. We now support up to 32 parallel ioctl << 595 There is a conscious effort to let mem << 596 commands. << 597 << 598 v. Do away with internal memory managemen << 599 instead. << 600 << 601 vi. Kill tasklet when unloading the driver << 602 << 603 vii. Do not use "host_lock', driver has fin << 604 data structures. << 605 << 606 viii. Optimize the build scatter-gather list << 607 know the data transfer address and len << 608 << 609 ix. Better implementation of error handlin << 610 performs extended errors recovery for << 611 612 x. Disassociate the management commands w 613 Driver now treats the management packe 614 dedicated callback routine.
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.